codexivo 0.2.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Historial de cambios
2
2
 
3
+ ## 1.0.0
4
+
5
+ Primera versión completa del lenguaje según la [especificación v1](./docs/especificacion-v1.md) (#24). Todo lo que funciona
6
+ está en [`docs/lenguaje.md`](./docs/lenguaje.md).
7
+
8
+ ### Lenguaje
9
+
10
+ - **Nivel principiante** (#25, #43): `para i desde a hasta b con_paso p`, `repetir n veces`, `constante`, `div`, `mod`
11
+ (`%`), `^`, `%=`, `i++`/`i--` como sentencias, comparaciones en palabras (`es_igual_a`, `es_menor_que`…), `1_000_000`
12
+ y `PI`.
13
+ - **Nivel intermedio** (#26, #27): procedimientos con nombre (se pueden usar antes de declararse), `para_cada`, `romper`,
14
+ `continuar`, asignación por índice (`lista[i] = …`), diccionarios con `d["clave"]` y `d.campo`, y
15
+ `para_cada clave, valor en d`.
16
+ - **Dominios** (#19): `dominio nombre { … }` agrupa declaraciones en un espacio de nombres que se usa con `.`.
17
+ - **Biblioteca** (#28, #29): texto, listas, diccionarios, matemáticas con `aleatorio` de semilla fija, `afirmar`,
18
+ `mapear`/`filtrar`/`reducir`/`alguno`/`todos`/`buscar`, `ordenar` con comparador estable, pilas y colas.
19
+ - **Modo mundo** (#30): el robot de Karel, con mundos en JSON, eventos `robot` y objetivos de reto (`checkGoal`).
20
+
21
+ ### Para el sitio
22
+
23
+ - Costo por operación de la biblioteca en una sola tabla (`n`, `n · ⌈log₂ n⌉`) (#29).
24
+ - `catalog`: palabras reservadas, operadores, biblioteca con ejemplos ejecutables y códigos de error como datos (#31).
25
+ - `flowGraph`: diagrama de flujo generado desde el AST, con los `nodeId` de los eventos (#32).
26
+ - `codexivo/worker`, `createSandbox` y `evaluarReto`: ejecución en Web Worker por tandas, retroceso por re-ejecución y
27
+ retos estilo HackerRank y LeetCode (#33).
28
+
29
+ ### Cambios que rompen compatibilidad
30
+
31
+ - Palabras reservadas nuevas: `constante`, `dominio`, `repetir`, `veces`, `desde`, `hasta`, `con_paso`, `para_cada`,
32
+ `en`, `romper`, `continuar`, `mod`, `div` y las comparaciones en palabras ya no sirven como nombres.
33
+ - Sin `;`, el salto de línea termina la expresión: una línea que empieza con `-`, `(` o `[` ya no continúa la anterior,
34
+ y una expresión partida antes de un operador es un error.
35
+ - `Snapshot.heap` acepta también diccionarios (`{ entries }`) y dominios (`{ domain, members }`).
36
+ - `ordenar` deja de ser un nativo (`natives.ordenar`) y pasa a la biblioteca escrita en Codexivo.
37
+ - Las llamadas a la biblioteca cobran su costo en operaciones, así que la cuenta de operaciones de los programas cambia.
38
+
3
39
  ## 0.2.0
4
40
 
5
41
  - Núcleo reescrito como lexer, parser, compilador y máquina reanudable (#23).