github covrom/gonec 3.1a
Гонец 3.1a

latest releases: 3.6, 3.5a, 3.4a...
pre-release6 years ago

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

  • Виртуальная машина получила идиоматически верные интерфейсные типы данных Го и новые быстрые обертки для системных функциональных объектов. Как следствие, еще более быстрая обработка данных и удобство при расширении функциональности стандартной библиотеки (из-за правильных абстракций).
  • Более строгий контроль типов при осуществлении операций
  • Код выполняется в воркерах, что позволит в дальнейшем создавать языковые конструкции с поддержкой параллелизма
  • Вызов функций существенно ускорен за счет отказа от рефлексии
  • Для работы с плавающей запятой использована библиотека работы с Decimal-типами (абсолютная финансовая точность операций с плавающей запятой, работа с большими числами)
  • Реализованы типы Дата и Длительность с русскоязычными встроенными методами (Год, Месяц, День недели и т,д.), форматирование в русской локали и.т.п. Работа с датой и временем возможна в любой локации и часовом поясе, при сравнении дат и времени это автоматически учитывается. Возможна работа с местным временем, и преобразование в другие часовые пояса / локации типа Europe/Moscow.
  • Добавлена быстрая хэш-функция на ассемблере https://github.com/dchest/siphash, для хэширования строк, структур и массивов (требуется в различных алгоритмах, где нужна проверка на уникальность больших/составных значений)
  • Добавлено сравнение системных функциональных структур через хэши их бинарного представления
  • Добавлены быстрые преобразования всех базовых типов в JSON, binary и обратно (в т.ч. и функциональных структур) - задел на будущие операции с сетевыми протоколами RPC, JSON-RPC и т.п.
  • Массивы и структуры получили операции коньюкции, дизньюкции и т.п. в виде обычного сложения, вычитания и т.д.

Простые тесты показывают хороший прирост производительности по сравнению с версией 2.0. Например, рекурсивный тест Фибоначчи увеличил производительность в два раза. Вместе с тем, в угоду производительности (избавление от рефлексии практически везде), утрачена былая гибкость использования функций в нативном исполнении на Го. Теперь необходимо писать более строгую обертку для типов, полей, методов и функций, которые должны быть доступны из языка Го. Это компенсируется на порядок более высокой производительностью и меньшим потреблением памяти.

Don't miss a new gonec release

NewReleases is sending notifications on new releases.