История изменений

2.0.0

Критические изменения

  • Минимальная версия Java — 17.
  • Упрощён оператор use. use std, math вместо use ["std", "math"].
  • case [x] при сопоставлении списков теперь соответствует лишь одному элементу.
  • Более строгий лексер. Исправлено экранирование обратного слэша в строках. Исправлены HEX числа println 0x0123456789, 0x०१२३४५६७८९.

Изменения

  • Добавлены константы. Константа может быть импортирована только при подключении модуля.
  • Возможность задать числа типа long: 700L, 0xABL
  • Исправлена область видимости переменных при шедоуинге.
  • Улучшена визуализация ошибок. Ошибки парсинга показывают конкретное место, где возникла ошибка. То же самое с линтером и ошибками времени исполнения.
  • Семантический линтер как обязательный этап работы интерпретатора.
  • Сохранение порядка элементов в Map по умолчанию.
  • Возможность запускать программы из ресурсов, указав "resource:" в качестве префикса пути.
  • Добавлены внутренние скрипты и команда ownlang run для их запуска. Добавлен скрипт checkUpdate для проверки новых версий.
  • Обновлена документацияopen in new window. Новый движок документации, основанный на vuepress.

Модули

  • [std] Добавлены функции parseDouble, nanotime, exit, getenv, getprop.
  • [http] Добавлена функция httpSync.
  • [functional] Добавлены функции groupby, tomap и операторы Stream.groupBy, Stream.filterNot, Stream.forEachIndexed, Stream::toMap, Stream.anyMatch, Stream.allMatch, Stream.noneMatch
  • [canvasfx] Исправлено для Java 17+ с Java FX 17 (только Windows)
  • [server] Новый модуль сервера

1.5.0

  • Добавлены модули zip, gzip, okhttp
  • Добавлены функции std::getBytes, std::stringFromBytes, std::stripMargin
  • В forms добавлены JProgressBar, JTextArea, JScrollPane, методы для JButton, JTextField и WindowListener
  • В functional::stream добавлена функция joining
  • Добавлены свойства и функции для массивов: arr.length, arr.isEmpty(), arr.joinToString(...)
  • Добавлен оператор объединения с null ?? (null coalesce)
  • Добавлены классы (пока без наследования, как структура)
  • Строгое преобразование строк в числа (раньше int("test") выдавало 0, а теперь ошибку)
  • В for теперь можно итерировать строки и массивы с индексом:
    for ch : "test"
    for ch, code : "test"
    for el : arr
    for el, index : arr
  • В jsonencode можно задать отступ для читабельного форматирования:
    jsonencode(obj) — минифицированный json
    jsonencode(obj, 2) — pretty-print с отступом в 2 пробела
  • Возможность задать параметры парсера/дампера yaml
  • Исправлено подключение к mysql в модуле jdbc
  • Исправлен str::range для реверсивных промежутков
  • Исправлена функция files::readBytes с заданными offset и length
  • Исправлен поиск подходящего конструктора класса в java::new, так же можно инстанцировать класс через оператор new
  • Другие мелкие изменения

1.4.0

  • Добавлены модули downloader, regex
  • Добавлены функции std::arraySplice, std::default
  • Добавлена константа OwnLang в модуль std, содержащая метаинформацию о версии языка и платформы
  • В StreamValue добавлены функции peek, sorted
  • Возможность импортировать сразу несколько модулей use ["std", "types", "math"]
  • Поддержка внутренних полей и функций у строк (length, lower, upper, chars, trim(), startsWith(s), endsWith(s), matches(s), contains(s), equalsIgnoreCase(s), isEmpty()). Также доступны автоматические функции расширения: "%d. %s".sprintf(1, "OwnLang") -> sprintf("%d. %s", 1, "OwnLang")
  • Добавлен kawaii-оператор ^^ для возможного переопределения
  • Улучшен режим REPL, теперь история команд (клавиша вверх) поддерживается на всех платформах, а по табу теперь всплывают подсказки автодополнения
  • Немного улучшен вывод ошибок
  • Обновлены примеры

1.3.0

  • Поддержка цепочек функций и функциональных вызовов (func().func() и func()())
  • Добавлены функции takewhile, dropwhile, stream в модуль functional
  • Добавлены функции parseInt, parseLong, toHexString в модуль std
  • Добавлена функция copy в модуль files
  • Добавлены модули socket, base64, java, forms, jdbc
  • Улучшена оптимизация
  • Обновлены примеры
  • Мелкие исправления и улучшения

1.2.0

  • Добавлены модули canvasfx, date, yml, aimp
  • Обновлены модули std, math, files, functional
  • Добавлена константа std::ARGS для доступа к аргументам командной строки
  • Добавлен режим REPL, Beautifier, линтер, оптимизатор
  • Добавлена операция слияния объектов map1 + map2
  • Исправлено восстановление при ошибках парсинга и зависание в лексере
  • Исправлена область видимости переменных
  • Ускорено чтение файлов
  • Добавлен кэш числовых значений
  • Обновлён плагин для Netbeans
  • Добавлены примеры и помощь