Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

El analyse de mulang.js se come la pc #347

Open
asanzo opened this issue Apr 25, 2022 · 2 comments
Open

El analyse de mulang.js se come la pc #347

asanzo opened this issue Apr 25, 2022 · 2 comments

Comments

@asanzo
Copy link
Collaborator

asanzo commented Apr 25, 2022

¡HOLAAAaaa!

Esto es una especie de bug report/pregunta, porque todavía no sé si el problema somos nosotres. Estamos usando mulang.js, la última versión publicada (6.0.6).

Esto sucede al hacer mulang.astCode(elAst).customExpect(edl):

Selection_028

Me bloquea absolutamente la página por 3 o 4 segundos aunque lo ponga en un setTimeout. Nada es clickeable hasta que termine de ejecutar.

Sucede con cualquier ast y cualquier edl, aunque por ejemplo para probarlo usé:

elAst = {"tag":"Sequence","contents":[{"tag":"EntryPoint","contents":["al_empezar_a_ejecutar",{"tag":"None","contents":[]}]}]} 
edl = ""

Afortunadamente para nosotres no es blocking porque por alguna razón la segunda vez que corre es infinito más rápida.

¿Por qué la segunda vez es más rápido el análisis? ¿Les ha pasado a ustedes por ejemplo con el cli de scratch?

Abrazote grande y como siempre muchas gracias.

@flbulgarelli
Copy link
Member

Ideas/comentarios:

  1. Suena "razonable" por la forma en que haskell en general lidia con las computaciones, cacheando resultados previos; no me extrañaría que fuera algún tipo de implementación (menos eficiente) de thunks en JS. Hay que tener en cuenta que la versión JS es simplemente el mismo código pasado por un compilador GHC con un target diferente. No me extrañaría tampoco que fuera una cuestión de carga de algún runtime interno, pero me parece mucho más razonable la primera hipótesis. Dudo por tanto que se puede hacer algo al respecto.
  2. Todo el soporte de Mulang basado en GHCJS es experimental y si bien todas las pruebas que hemos hecho han sido positivas siempre, no tiene el nivel de prueba en campo de batalla que sí tiene la versión nativa

Comentario general: parece que el proyecto GHCJS está muerto o muriendo, y stack ha sacado soporte para esta herramienta en sus últimas versiones. Esto es malo porque nos está empezando a complicar el propio desarrollo de Mulang, al lockearnos a versiones innecesariamente viejas de stack y GHC. De hecho, ya al día de hoy nos está complicando nuestro proceso de deploy y no estamos actualizando las versiones nuevas para JS con tanta frecuencia como la de mulang nativo. Estamos empezando a preguntarnos cuánto mas mantendremos la situación.

Hay quienes proponen pasar a otros compiladores inspirados en Haskell para JavaScript, pero eso hoy para nuestro equipo es prohibitivo, porque implicaría una reescritura y un mantenimiento por duplicado de la base de código. Me pregunto si entre nuestras dos organizaciones podríamos trabajar para mantener vivo a GHCJS.

@asanzo
Copy link
Collaborator Author

asanzo commented May 9, 2022

Extra extra: En Chrome anda MUCHO, MUCHÍSIMO más rápido. Fracciones de segundo. Apenas un "bump" en el gráfico. (Eso era en FF)

Sobre el mantenimiento, deberíamos charlar más a fondo. Por ejemplo ¿Qué significa mantener el GHCJS? En este momento dudo tener en el equipo gente que sepa lo suficiente de Haskell o de JS para esa empresa (me incluyo).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants