Skip to content

Releases: thewizardplusplus/micro

v2.3

29 Mar 00:34

Choose a tag to compare

Бенчмарк минификации, модуль для юнит-тестирования, улучшения рантайма, библиотеки и примеров и подготовка пакетов к публикации.

Изменения

  • Рантайм:
    • Переименовать функцию рантайма ? в ?? #142
    • Исправить результат функции рантайма args при чтении кода скрипта с stdin (первым аргументом возвращать строку __stdin__) #143
  • Библиотека:
    • Переименовать функцию библиотеки generate_while в generate_if #144
    • Восстановить в библиотеке модуль для юнит-тестирования #153
  • Примеры:
    • Добавить в пример 1D-жизнь комментарий о том, что данный алгоритм является правилом 104 для элементарных клеточных автоматов (https://en.wikipedia.org/wiki/Elementary_cellular_automaton) #145
    • Добавить в пример 2D-жизнь параметр FILL_FACTOR (рассчитывать по нему параметр POINTS_NUMBER, если тот не задан) #146
    • Сфера:
      • Переименовать переменную eye_direction в normal #148
      • Выделить функцию clamp #149
  • Бенчмарк:
    • Добавить бенчмарк минификации — Virtual DOM:
    • Добавить утилиту для проведения бенчмарка #155
    • Добавить общее описание бенчмарка #156
  • Пакеты:
    • Подготовить проект к публикации в репозиторий пакетов Python #141
    • Подготовить плагин для редактора Atom к публикации в репозиторий пакетов Atom #152

Скриншоты

Example of a program in Micro

v2.2

09 Aug 07:16

Choose a tag to compare

Потенциальная поддержка REPL, рефакторинг, улучшения рантайма и библиотеки и новые примеры.

Изменения

  • Перевести имена служебных файлов в верхний регистр #97
  • Возвращать код завершения 1 при перехвате исключения KeyboardInterrupt (Ctrl+C) #101
  • Добавить поддержку shebang #102
  • Привести к единообразию обработку концов строк #116
  • Вернуть поддержку многострочных строковых литералов #132
  • Потенциальная поддержка REPL:
    • Скорректировать обработку исключений во время вычислений #78
    • Поддерживать повторные вычисления с тем же списком функций #79
    • Добавить заглушки для генерируемых функций рантайма #109
    • Хранить ошибки индивидуально в каждом экземпляре парсера #110
  • Рефакторинг:
    • Выделить отдельную функцию для парсинга кода из строки #108
    • Выделить отдельную функцию для выполнения кода из строки #118
    • Выделить логику выбора конкретного файла для загрузки в отдельный подпакет #126
    • Выделить логику кеширования загружаемых файлов в отдельный класс #127
  • Рантайм:
    • Удалить функцию рантайма arity #85
    • Добавление функций:
      • Добавить в рантайм функцию bool #70
      • Добавить в рантайм поддержку NaN и infinity #92
      • Добавить в рантайм константы pi и e #93
      • Добавить в рантайм функцию sleep #106
      • Добавить в рантайм функцию seed #112
      • Добавить в рантайм функцию is_main #129
    • Изменение функций:
      • Добавить функции рантайма env поддержку конфигов .env #72
      • Поменять порядок аргументов в функции рантайма angle #134
      • Функция load:
        • Поддерживать задание внешней реализации функции рантайма load #103
        • Обернуть функцию рантайма load в closure_trampoline #130
  • Библиотека:
    • Дополнить библиотеку для работы со списками #98
    • Поиск файлов при загрузке:
      • Включить библиотеку в pip-пакет #73
      • Добавить место установки pip-пакета как путь для поиска скриптов после переменной MICRO_LIBRARY #74
      • Поддерживать указание нескольких путей в переменной MICRO_LIBRARY #77
    • Изменение функций:
      • Упростить функцию библиотеки ansi #89
      • Доработать функцию библиотеки generate #111
      • Поменять порядок аргументов в функции библиотеки reduce #135
    • Удаление функций:
      • Удалить функцию библиотеки count #105
      • Удалить из библиотеки модуль для юнит-тестирования #107
  • Примеры:
    • Удалить из примеров тесты #83
    • Улучшить стиль кода в примерах #133
    • Выделить общий код из примеров #138
    • Добавление примеров:
      • Добавить новый пример — перцептрон #120
      • Добавить новый пример — множество Мандельброта #121
      • Добавить новый пример — сфера #124
      • Добавить новый пример — 2D-жизнь #125
    • Пример 1D-жизнь:
      • Убрать закольцовывание из примера 1D-жизнь #131
      • Разделить пример 1D-жизни на модули #137
      • Вынести магические константы из примера 1D-жизнь в его параметры #139
  • pip-пакет:
    • Указать в setup.py требуемую версию Python #75
    • Рефакторинг парсинга версии pip-пакета #100
    • Убрать явную установку группы для файла parsetab.py #119
  • Плагин для редактора Atom:
    • Удалить поддержку сниппетов из плагина для редактора Atom #80
    • Упростить обработку отступов в плагине для редактора Atom #81
    • Добавить описание установки в плагин для редактора Atom #82
    • Улучшить стиль кода в плагине для редактора Atom #86
  • Документация:
    • Упростить регулярные выражения для пунктуационных идентификаторов в документации #87
    • Изменить в документации описание типизации со слабой на сильную #99
    • Исправить описание некоторых функций рантайма в документации #117
    • Общее описание:
      • Дополнить описание модульности в документации #123
      • Дополнить описание требований к файлам исходного кода в документации #136
    • Библиотека:
      • Указать наименование (путь) модулей в документации на библиотеку #104
      • Поменять порядок функций в документации на библиотеку #122
    • Оформление:
      • Добавить логотип языка (logo) #90
      • Добавить оглавление к документации #96
      • Исправить знак копирайта #140

Скриншоты

Example of a program in Micro

v2.1

30 Apr 16:36

Choose a tag to compare

Поддержка форсирования вычислений и преобразования типов, битовые функции и функции для работы с хеш-таблицами, модульность, стандартная библиотека, рефакторинг, pip-пакет.

Изменения

  • Добавить преобразование типов #1
  • Добавить возможность форсирования вычислений #2
  • Удалить тип int #3
  • Удалить внутренний тип bool #32
  • Добавить поддержку шестнадцатеричных числовых констант #29
  • Библиотека:
    • Добавить библиотеку для юнит-тестирования #53
    • Добавить библиотеку для работы со списками #58
    • Добавить библиотеку для работы с CLI #59
    • Добавить в библиотеку функцию для создания универсального цикла #68
  • Рантайм:
    • Переименовать функцию рантайма $ в [] #4
    • Добавить в рантайм функцию round #10
    • Добавить в рантайм функции strb, strs, strl, strh и strhh #12
    • Добавить в рантайм функции false и true #13
    • Добавить в рантайм функции ++ и -- #21
    • Добавить функции рантайма + поддержку конкатенации списков и слияния хеш-таблиц #22
    • Добавить в рантайм битовые функции #30
    • Переименовать функцию рантайма ~ в _ #31
    • Дополнить поддержку функции рантайма args #36
    • Добавить в рантайм функции для работы с хеш-таблицами #37
    • Добавить в рантайм функцию size #38
    • Сделать функции рантайма && и || ленивыми #46
    • Добавить в рантайм функцию load #49
    • Добавить в рантайм функцию для доступа к коллекциям по индексу #60
    • Добавить в функции рантайма head и tail поддержку пустых списков #61
    • Добавить в рантайм функцию для указания значений по умолчанию #62
    • Системные функции:
      • Добавить в рантайм функции outln и errln #9
      • Добавить в рантайм функцию env #14
      • Добавить в рантайм функцию time #15
      • Поддерживать чтение строки в функции рантайма in #16
      • Добавить в рантайм функцию inln #39
      • Добавить поддержку вывода сообщения в функцию рантайма exit #45
  • Обработка строк:
    • Упростить регулярные выражения символов и строк #23
    • Упростить функции quote и unquote #24
    • Добавить поддержку шестнадцатеричных escape-последовательностей #25
    • Удалять конечные нули из дробной части при преобразовании числа в строку #33
  • Обработка ошибок:
    • Выбрасывать исключение при попытке преобразования в строку значения неизвестного типа #34
    • Выбрасывать исключение при попытке вычисления сущности неизвестного типа #35
    • Выбрасывать исключение при попытке создания функционального типа из неподходящего источника #40
    • Рефакторинг обработки ошибок #44
    • Добавить имя файла скрипта в сообщения об ошибках #48
    • Отображать исключения как все прочие ошибки #52
    • Определять позицию в коде и имя файла для ошибок времени выполнения #57
    • Обрабатывать исключение KeyboardInterrupt (Ctrl+C) #63
  • Рефакторинг:
    • Удалить отладочный код #5
    • Привести стиль кода в соответствие с PEP 8 #6
    • Вынести тесты в примеры #11
    • Реорганизовать код #17
    • Рефакторинг встроенных функций #18
    • Рефакторинг препарсера #19
    • Вынести в отдельный класс преобразование в строку списка токенов #27
    • Рефакторинг парсера #41
    • Рефакторинг вспомогательных функций #42
    • Рефакторинг функционального типа #43
    • Вынести в отдельную функцию основной код #47
  • pip-пакет:
    • Оформить pip-пакет #7
    • Подключить библиотеку PLY как зависимость pip-пакета #8
  • Сниппеты:
    • Добавить в сниппеты пробелы в шаблонах с функциями #64
    • Добавить в сниппеты поддержку классов #65
    • Добавить в сниппеты заготовку для обхода списка #66
    • Добавить в сниппеты пробелы или переносы строк перед последним положением курсора #67
  • Сделать скоуп замыканий независимым между их запусками #56
  • Добавить возможности функции рантайма load по поиску файлов самому интерпретатору #55
  • Добавить кеширование загружаемых скриптов #54
  • Использовать независимые списки функций при парсинге и вычислениях #51
  • Добавить новый пример — weasel program #50
  • Изменить лицензию документации на CC BY 4.0 #28
  • Игнорировать символ возврата каретки #26

Скриншоты

Example of a program in Micro

v2.0

04 Dec 21:31

Choose a tag to compare

Мажорный релиз. Добавлены полустатическая типизация и построение AST, убраны ограничение на глубину рекурсии и поддержка императивного программирования.

Изменения

  • добавлена полустатическая типизация — статически типизированны только вызываемые типы (функции арности больше 0), остальные типы используют динамическую типизацию;
  • благодаря появлению полустатической типизации:
    • парсинг кода осуществляется до его выполнения;
    • осуществляется построение AST;
  • снято ограничение на глубину рекурсии (теперь рекурсия не ограничена ни Python, ни стеком);
  • убраны:
    • автоматический вызов функций при их определении;
    • поддержка императивного программирования;
    • доступ к интерпретатору (функция eval);
  • мутабельные структуры данных заменены на иммутабельные.

Скриншоты

Example of a program in Micro

v1.0

04 Dec 21:31

Choose a tag to compare

Major release. Add docs.

Change Log

  • Add docs:
    • Add the grammar description.
    • Add a brief of the lang description.
    • Add the lang description.
    • Add the runtime description.
    • Add the development plan.
  • Make the set function immutable.
  • Add command line arguments.
  • Add an arity function.
  • Correct a code requiring.

Screenshots

Example of a program in Micro

v0.23

04 Dec 21:30

Choose a tag to compare

v0.23 Pre-release
Pre-release

Add a plugin for the Atom editor.

v0.22

04 Dec 21:29

Choose a tag to compare

v0.22 Pre-release
Pre-release

Add examples.

Change Log

  • Add examples.
  • Add a rand function.
  • Extend a list access.
  • Add a read function.

v0.21

04 Dec 21:29

Choose a tag to compare

v0.21 Pre-release
Pre-release

Add an options processing.

v0.20

04 Dec 21:28

Choose a tag to compare

v0.20 Pre-release
Pre-release

Extend a list of builtin functions.

Change Log

  • Extend list functions.
  • Extend math functions.
  • Add an unary minus.
  • Add an eval function.
  • Add require functions.
  • Add a type detection.
  • Add an is_def function.
  • Add an exit function.

v0.19

04 Dec 21:27

Choose a tag to compare

v0.19 Pre-release
Pre-release

Refactoring.