crypt of decay - sxed, скриптодвижок [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

sxed, скриптодвижок [Oct. 1st, 2022|03:09 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
поскольку оригинальное намерение «чуть-чуть подпилить, может потом вернуть во флайтгир» давно уже накрылось всеми возможными тазами, то я не вижу смысла больше тащить nasal. не, nasal крутой, но один фиг с моими дополнениями он вырос с 300 кб до 700+, и уже нифига не совместим с оригиналом ни по апи, ни по синтаксису.

поэтому было принято волевое решение тупо написать новое скриптодвигло с нуля. от старого останется GC (который я один фиг полностью переписал, так что технически GC тоже новый), а всё остальное — заново. будет регистровая машина вместо стековой, возможно комбинированые хэшемассивы (как в Lua), и относительно оптимизирующий компилятор.

собственно, technical alpha уже празит код, оптимайзит AST, генерит более-менее плотный 3-op VM code, и даже его выполняет. естественно, будут нормальные вложеные функции и замыкания (парзер их уже понимает, и кодоген тоже). оно уже вполне в состоянии свернуть вот такое:

const a = 10, b = 69, c = a+b;
if (с) 42; else if (b) 69; else 666;


до просто `42` (и не создавать локалы для констант вообще).

натурально, за счёт регистровой VM и отказа от хэшей для хранения локалов новое двигло будет значительно быстрее (иначе какой смысл было всё это затевать). не то чтобы скорость имела какое-то решающее значение, но приятно. опять же: испытаный в реальном проекте движок всенепременно пригодится где-то ещё.

а, и само собой — нормальный lexical scoping. чтобы любителям жабоскрипта было больнее, `var` остался, но теперь работает как `let`.
Linkmeow!

Comments:
From:(Anonymous)
Date:October 1st, 2022 - 04:55 pm
(Link)
>>`var` остался, но теперь работает как `let`.

Это садизм похлеще музыки Шопена
[User Picture]
From:[info]ketmar
Date:October 1st, 2022 - 05:03 pm
(Link)
спасибо, я старался!
From:(Anonymous)
Date:October 1st, 2022 - 06:07 pm
(Link)
Какую задачу программисту ни дай — всё равно сделает компилятор.
[User Picture]
From:[info]ketmar
Date:October 1st, 2022 - 07:18 pm
(Link)
особенно мне: я же упарываюсь по компиляторам.