Elm 0.19, его парсер и MiniLatex
Только что вышла долгожданная версия 0.19 компилятора Elm. Что он делает по-другому? Во-первых, компиляция кода НАМНОГО быстрее. Вот сколько времени потребовалось для компиляции моего проекта kNode (5k loc) после касания всех 29 модулей:
real 0m0.958s user 0m0.651s sys 0m0.158s
При нормальной разработке за один раз изменяются только несколько файлов, а скорость компиляции находится в пределах шкалы времени, точнее, около 500 мс.
Во-вторых, размеры активов намного меньше. В случае kNode размер Main.min.js.gzip
файла, который содержит все приложение, составляет всего 58 КБ. В анонсе 0.19 Эван Чаплицки рассказывает о том, что делает это возможным. Одним словом, гранулярность на уровне функций. Прочитать все об этом!
В-третьих, удивительно elm/parser
быстро, быстро, быстро! Я использовал его для создания анализатора-рендерера MiniLatex - конвейера, который анализирует исходный текст LaTeX в абстрактное синтаксическое дерево (AST), а затем преобразует AST в HTML. Новый синтаксический анализатор делает возможным рендеринг LaTeX в HTML в реальном времени: изменения в документе MiniLatex отображаются в масштабе моргания. Это смелое заявление, поэтому убедитесь в этом сами, воспользовавшись демонстрационным приложением MiniLatex Live.
Ожидание версии 0.19 компилятора Elm того стоило. В него было вложено невероятное количество мыслей и упорного труда, и результаты говорят сами за себя. В случае моего проекта значительно улучшенная производительность парсера изменила правила игры. Да здравствует --optimize
флаг!
О MiniLatex Live. Обратите внимание, сколько времени потребовалось для отображения визуализированного текста. Приложение загружается, затем анализирует и отображает исходный текст в левом окне и, наконец, отображается в правом окне. Если на все это уйдет больше, чем моргание, я куплю тебе пива. Если вы хотите увидеть, что происходит с более длинным документом, взгляните на Волновые пакеты на kNode. Или перейдите на kNode.io, введите волна в поле поиска и нажмите Ctrl-Enter (Ctrl-Return). Редактирование документов всегда выполняется быстрее, чем первоначальная визуализация всего документа.
Техническое примечание. Библиотека MiniLatex, 3.7k loc, компилируется отдельно от приложения kNode. kNode взаимодействует с серверной частью Elixir 3k loc, которая обслуживает файлы LaTeX, управляет аутентификацией пользователей и т. д. Приложение kNode также взаимодействует с веб-сервером Nginx, оснащенным PHP, для преобразования файлов MiniLatex в PDF для печати.
Некоторые технические примечания по MiniLatex: На пути к LaTeX в браузере
.