Изменения в версии 6.1.1
- Обработка возврата типов
&
к типам *
. Это особенно актуально для std::vector<int *>
и подобных контейнеров.
- Обновление CMake для использования
LIBDIR
вместо lib
#502 от @guoyunhe.
- Добавление документации по установке ChaiScript с помощью vcpkg #500 от @grdowns.
- Исправление предупреждения о неявном захвате лямбда-выражения
this
в C++20 #495 от @Josh-Thompson.
Изменения с версии 6.0.0
- Поддержка пространств имён #290 @stephenberry.
- Поддержка разбора UTF.
- Обновления cheatsheet.md.
- Поддержка утилиты
add_class
для ограниченных перечислений #306 @StanEpp.
- Оптимизация парсера #300 @niXman.
- Различные исправления JSON #377, #400, #409, #371 @totalgee, @dinghram, @arcoRocks.
- Различная очистка, исправления ошибок и предупреждений, а также незначительные улучшения производительности.
- Поддержка компиляторов C++17!
- Поддержка UTF8 BOM #439 @AlekMosingiewicz, @MarioLiebisch.
Изменения с 5.8.6
Версия 6.0.0 представляет собой масштабную переработку по сравнению с версией 5.x. Теперь требуется компилятор C++14.
Требования к компилятору
- MSVC 2015 или новее.
- g++ 4.9 или новее.
- clang 3.6 или новее.
Критические изменения
- Создание объекта ChaiScript теперь по умолчанию создаёт стандартную библиотеку. Это было сделано для решения наиболее распространённых проблем поддержки динамической загрузки стандартной библиотеки во время выполнения. Если вы хотите сохранить старое поведение, используйте include/chaiscript/chaiscript_basic.hpp.
- Заголовки были реорганизованы, чтобы полностью отделить стандартную библиотеку/парсер/движок друг от друга (некоторые более быстрые сборки).
- Функции начальной загрузки больше не возвращают ссылку на добавленный модуль (экономия времени компиляции).
- Теперь невозможно изменять AST_Nodes (эффективность компиляции и выполнения).
- Аннотации функций больше не существуют (упрощение кода, сокращение времени и размера компиляции).
Добавленные функции
- Модульная система оптимизации; доступ к ней можно получить через интерфейс ChaiScript_Basic.
- Возможность отслеживания выполнения; также доступна через интерфейс ChaiScript_Basic.
- Циклы
for( id : container ) { }
, основанные на диапазонах (гораздо лучшая производительность по сравнению с другими типами циклов).
- Выражения if-init (как в C++17).
- Поддержка передачи r-значных ссылок на функции.
- Поддержка содержания unique_ptr.
- Добавлены помощники для предоставления классов enum для ChaiScript.
- Разрешить типизированным функциям ChaiScript выполнять преобразования при вызове #303.
Улучшения
- Улучшения времени компиляции.
- Улучшение размера компиляции.
- Значительные улучшения времени выполнения (см. «Модульная система оптимизации»).
- Значительное улучшение парсера как во время синтаксического анализа, так и во время инициализации парсера (спасибо @niXman).
- Исправлена ошибка преобразования типа в логические значения в условных выражениях.
Необходимые улучшения
- Система отслеживания местоположения файлов была переписана; это означает, что текущее сообщение об ошибке местоположения не такое хорошее, как раньше.
- Необходимо протестировать и проверить возможность отслеживания. Изменения в версии 5.2.0
- Автоматическое добавление при наследовании, где это возможно.
Изменения с момента версии 5.1.0
- Добавлена поддержка автоматического преобразования арифметических типов, когда это возможно и нет неоднозначности в отправке метода.
Изменения в версии 5.0.0
- Исправлен размер числовых констант в соответствии со стандартом C++.
- Добавлена поддержка суффиксов u, ll, l, f для числовых констант.
- Значительное улучшение отчётности об ошибках.
Изменения после версии 4.2.0
- Улучшены модульные тесты.
- Добавлено ключевое слово continue, исправлены различные случаи использования циклов for.
- Исправлено использование чисел с суффиксами в инициализации вектора.
- Проведена очистка кода.
- Устранены глобальные данные, что делает код более переносимым и потокобезопасным.
- Решена проблема №79.
- Объединены исправления pretty_print от @mgee (проблема №82).
- Исправлены предупреждения компилятора для последних выпусков компиляторов.
- Исправлены проблемы с многопоточностью.
- Исправлена ошибка компоновки на MacOS Mavericks (проблема №88).
- Разрешено использование неконстантных глобальных переменных.
- Исключена возможность именования переменной с помощью :: (проблема №91).
- Исправлены вызовы size и count для строк, карт и векторов для компиляторов, имеющих странные перегрузки для них (проблемы №90, №93, №95).
- Сделан относительным путь поиска модуля к текущему исполняемому файлу.
- Построена работа с wstring в Windows.
- Исправлено несколько случаев с новыми строками в середине инициализации вектора от jespada.
Изменения после версии 4.0.0
- Отказались от boost в пользу C++11.
- Разделили stdlib, чтобы иметь больше возможностей для улучшения времени компиляции.
Изменения после версии 3.1.0
- svenstaro: устранены неиспользуемые переменные и исправлены несоответствия в CMake.
- Добавлена поддержка возврата указателей из функций (№13).
- Компиляция с -pedantic (№9).
- Исправлены проблемы с несколькими типами объектов ChaiScript, имеющими одно и то же имя атрибута (№15).
- Предотвращено повторное объявление переменных в одной области видимости (№22).
- mgee: улучшен Boxed_Number (№27).
- Поддерживаются операторы switch (№34).
- Исправлены сравнения uint16 (№26).
- Добавлена возможность добавления глобальных переменных const_var в объектах Module (№14).
- Добавлена поддержка тернарных операторов ?: .
- Добавлены заголовки в файлы CMakeLists, чтобы они отображались в IDE.
- Добавлена возможность получить вектор определённых объектов и вектор определённых функций.
- Исправлена утечка памяти в циклических ссылках.
- Очищены обнаруженные проблемы статического анализа.
- Исправлена конструкция вектора, чтобы она соответствовала конструкции карты.
- Количество модульных тестов увеличено до 161.
- Повышена производительность.
Изменения после версии 3.0.0
- Производительность числовых операций увеличена примерно в 10 раз.
- Производительность операций цикла увеличена до 2 раз.
- Сокращено время запуска движка.
- Несколько ошибок синтаксического анализа, связанных с индексными операторами, исправлено.
- Полностью поддерживается все алгебраические типы C: double, long double, float, int, long, char, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t.
- Расширена поддержка перехвата исключений, генерируемых ChaiScript в C++.
Изменения после версии 2.3.3
- Код упрощён.
- Документация полностью интегрирована с исходным кодом в стиле комментариев doxygen.
- Модульные тесты увеличены с 114 до 137.
- Автоматическая конвертация между объектами boost::function и функциями ChaiScript.
- Множество исправлений ошибок.
- Незначительные улучшения производительности.
- Организация пространства имён для облегчения доступа к коду конечного пользователя.
- Поддержка clang.
- Поддержка VisualStudio 2010.
- Поддержка базовых классов C++ и автоматическое приведение типов.
- Удалены зарезервированные идентификаторы __.
- Лучшая организация кода для уменьшения #ifdefs. Срок жизни стека:
- поддержка pkgconfig (emarcotte);
- стандартизация именования методов/членов и отступов;
- поддержка 64-битной Visual Studio;
- улучшенная поддержка константных объектов;
- резкое сокращение исключений во время выполнения — это делает сборки отладки на порядок быстрее;
- поддержка платформ без поддержки загружаемых модулей;
- добавление вспомогательного макроса для регистрации класса.
Опубликовать ( 0 )