Agent/stabilize foundation - #10
Open
FuryBaM wants to merge 268 commits into
Open
Conversation
Добавлены встроенные функции isLoaded(path) и loadError() для работы с динамическими библиотеками: проверка кэша загрузки и получение текста последней ошибки. Реализована поддержка на уровне анализатора, генератора кода и runtime (Windows/Posix). Обновлены тесты и документация.
Введён модуль std.random с генератором xoshiro256** и API для получения uint64, int32, диапазонов, вещественных и булевых значений, а также доступа к системной энтропии. Добавлены тесты (включая golden-тест), документация и обновлён TODO. Исправлен поиск destroy() через CallableKey в codegen_types.cpp.
Добавлен режим скриптового стиля: исполняемые операторы и переменные на верхнем уровне файла автоматически оборачиваются в скрытый int32 main() с return 0. Смешение с явным main запрещено. Добавлены тесты, обновлены README и TODO, реализована обработка в компиляторе.
Реализована поддержка атрибутов планирования задач (`@task`, `@spawn`) для асинхронных функций и отдельных запусков. Поддерживаются параметры `core`, `priority`, `role` с наследованием и переопределением. Введена строгая проверка аргументов в анализаторе. В рантайме реализована приоритетная очередь задач с affinity и ролями, добавлены C API и модуль `std.task` для получения параметров текущей задачи. Обновлены тесты и документация.
Реализована поддержка статических и instance async-методов с проверкой стабильности receiver и ограничениями на типы. Для виртуальных методов обеспечен vtable-диспетчер в thunk. Добавлены новые ошибки компиляции для override и некорректного использования receiver. В LLVM backend реализована упаковка receiver и виртуальный вызов. Добавлены тесты и документация, обновлены README и TODO.
Реализована поддержка параметров-ссылок на значения (`ref` и `const ref`) для resource-free struct: синтаксис, анализ, диагностика ошибок, lowering в LLVM (nonnull/nocapture/readonly), корректное сопоставление сигнатур и ABI. Запрещено для классов, generic, ресурсов, async/C-ABI, лямбд, func-value и др. Добавлены тесты на ошибки, IR и позитивные сценарии, а также бенчмарк by-value vs raw-pointer (ускорение до 1.19x). Обновлена документация.
Реализована поддержка слабых управляемых указателей (`weak T*`) в Absolute: парсер, лексер, семантика, генерация кода и тесты. Введены строгие правила владения и ограничений для weak-ссылок. Обновлена документация и синтаксическая подсветка.
Введена каноническая форма ссылок на значения: теперь используются только `T&` и `const T&`, а `ref T`/`const ref T` остаются исходными алиасами и нормализуются при парсинге. Добавлен модуль `type_names.h` для распознавания и нормализации типов. Парсер поддерживает оба синтаксиса, но запрещает их одновременное использование. В объявлениях переменных вне параметров `&` запрещён. Вся логика анализа, генерации кода и диагностики переведена на работу с каноническими формами. Обновлены тесты, документация и скрипты проверки IR для отражения новой терминологии и синтаксиса. Изменения устраняют неоднозначности и приближают ABI к C++-подобному стилю.
Реализована поддержка явного перемещения владения (`move(owner)`) для управляемых указателей: теперь возможно безопасно передавать владение между переменными, полями и возвращаемыми значениями. Добавлен анализ и диагностика ошибок для некорректных перемещений (подписчики, слабые/const указатели, невалидные источники, потерянные результаты, перемещение в заёмные параметры). Введён анализ циклических графов владения: сильные поля формируют лес, обратные рёбра и кросс-ссылки разрешены только через `weak`, сильные циклы запрещены. Добавлены тесты и проверки IR, обновлена документация и README.
* Итераторы Vector/Map/Set теперь хранят неизменяемый snapshot элементов на момент вызова iterate(), что гарантирует их безопасность при изменении коллекции во время обхода. * Метод iterate() возвращает новый managed-итератор. * В кодогенераторе реализовано корректное владение и cleanup итераторов в foreach, включая выход через break и return. * Добавлен тест collection-snapshot-iteration.abs и интеграция в CMake. * Обновлена документация по модели snapshot/COW и task isolation. * Улучшена поддержка generic-типов и освобождения ресурсов в runtime.
В кодогенератор и сборку добавлена поддержка AddressSanitizer через флаг --sanitize=address. Реализованы тесты на use-after-free, double-free и утечки памяти с автоматической проверкой через ASan. В README и TODO отражены новые возможности и оптимизация dereference managed-указателей (кэширование адреса в релизе). Улучшена проверка IR для контроля отсутствия лишних проверок в циклах.
Реализованы кроссплатформенные модули std.fs и std.net с C++-бэкендом и C-интерфейсами для Absolute: работа с файлами, директориями, потоками, TCP-соединения, слушатели, отправка/приём данных. Добавлены высокоуровневые обёртки (File, TcpSocket, TcpListener), тесты, обновлена документация и сборочная система. Улучшена поддержка сравнения строк и линковки сетевых библиотек.
В .csproj отключена автогенерация AssemblyInfo и TargetFrameworkAttribute. Метод destroy() в BinaryNode теперь корректно удаляет только существующих потомков и обнуляет ссылки. В objectTree() удалён лишний вызов destroy(). Добавлены бинарные файлы std_coll_test.exe и test_objtree.exe.
Реализован парсинг, анализ и генерация кода для многомерных срезов массивов (например, matrix[1:3, 0:2]). Добавлены структуры AST для диапазонов срезов, обновлены проверки размерностей и типов в анализаторе, реализовано копирование подмассивов в генераторе кода. Добавлены тесты и интеграция в CMake. Исправлены и реорганизованы участки, связанные с массивами, удалён устаревший код в тестах.
Добавлен copy-on-write для Vector, Map и Set через _isShared и ensureUnshared; изменяющие методы теперь защищают внутреннее хранилище при наличии активных итераторов. Улучшен выбор перегрузки функций в analyzer.cpp: устранены дубликаты, добавлена поддержка generic-параметров класса, доработано разрешение неоднозначностей. Обновлён TODO.md, добавлен test_vec.exe.
В стандартные коллекции Vector, Map и Set добавлены классы Builder для безопасного построения новых коллекций на основе snapshot-а. Реализованы методы builder() и unsafeCopyRaw(). Итераторы теперь возвращают квалифицированные типы. В компилятор добавлена поддержка разрешения generic-типов с учётом namespace. Добавлен тест collection-builder-capability.abs и соответствующие CMake-тесты. В TODO отмечено выполнение задачи по скрытию мутабельного хранилища.
Расширены и переработаны алгоритмы для массивов и векторов: все функции (sort, binarySearch, reverse, indexOf, contains, find, transform, filter, reduce) реализованы как extension-методы. Добавлены перегрузки сортировки с компаратором. Улучшена поддержка extension-методов и generic-функций в парсере, анализаторе и кодогенераторе. Исправлен поиск кандидатов с учётом namespace-импортов. Добавлен тестовый файл, покрывающий новые возможности. Внесены мелкие исправления в рантайм и кодогенерацию. В TODO отмечено выполнение задачи по стандартным алгоритмам.
Добавлены метаданные invariant_load для загрузки дескриптора массива, упрощена проверка выхода за границы с использованием только ULT. Для функции exit добавлены атрибуты NoReturn и Cold. В TODO отмечено выполнение Release-elimination для bounds checks.
В CMake добавлены тесты на компиляцию, генерацию и проверку LLVM IR, сборку и запуск для SIMD/vectorization. В TODO.md отмечено выполнение задачи. Добавлен скрипт проверки IR на наличие векторизационных паттернов. Добавлен тестовый файл с операциями над int32[], float[], double[].
Реализованы cancellation tokens, каналы, атомарные целые и мьютексы с C-интерфейсами и обёртками в std.concurrent и std.collections. Добавлена поддержка преобразования между указателями и целыми типами. Включены новые тесты и расширен набор стандартных модулей для асинхронного и конкурентного программирования.
Добавлена структура CapsuleImpl и функции управления transfer capsule в pointers.cpp для безопасной передачи владения handle между task-isolate. В TODO.md отмечены завершённые задачи по изоляции task и поддержке capsule. В capsule.abs реализован класс std.concurrent.Capsule для работы с capsule через FFI.
Добавлены поля copy_message_function, make_immutable_function и rehome_function в AbsoluteResourceDescriptorV1 для поддержки передачи ресурсов между изолятами. Внедрена логика canCrossIsolateBoundary() для определения возможности передачи ресурса. Обеспечена обратная совместимость при регистрации ресурсов. Обновлён тестовый плагин и документация.
Реализован модуль package_manager с API для загрузки, сохранения и разрешения зависимостей, SemVer-парсером и проверкой ограничений версий. В Absolute-Compiler добавлена обработка новых форматов манифестов и интеграция с менеджером пакетов. В CMake добавлен тест на работу с зависимостями. В TODO отмечено выполнение соответствующих задач. Добавлен кэш модулей для отслеживания актуальности файлов. Проведены вспомогательные изменения для поддержки новых форматов проектов и тестов.
Добавлена поддержка нескольких реестров пакетов и транзитивных зависимостей, предотвращение циклических зависимостей, расширен формат PackageManifest (registries, targets). Реализовано кэширование артефактов по хэшу исходников. Добавлены новые тесты для проверки работы с плагинами, нативными библиотеками и транзитивными зависимостями. Улучшена обработка ограничений версий.
Введены новые типы плагинов (Compiler, Language, Editor, Runtime) и соответствующие entry points. Расширены структуры и vtable для opaque AST, добавлены транзакции парсера и диагностики. Реализована поддержка новых возможностей в plugin_loader.cpp и syntax_plugins.cpp. Обновлён TODO.md, улучшена логика регистрации и проверки уникальности плагинов. Изменения направлены на стандартизацию ABI и расширяемость системы.
В проект Absolute-Compiler.vcxproj добавлен src\package_manager.cpp для устранения ошибки LNK2019 (SaveLockfile). Проведён анализ и поэтапное выполнение задач по восстановлению сборки после обновления MSVC toolset v145. Все этапы сценария успешно завершены, ошибки и предупреждения устранены. В документацию добавлены отчёты о ходе работ и результатах сборки.
Добавлены поля optionalDependencies, conflicts, targets, permissions и ruleNamespace в манифест плагинов. Реализована обработка конфликтов и опциональных зависимостей при загрузке. В API плагинов добавлены структуры и callback-и для source mapping (generated/foreign/IR). В AbsoluteOpaqueSyntaxRuleV1 добавлено поле rule_namespace, реализована поддержка namespace для ключевых слов синтаксических правил, предотвращающая конфликты между плагинами. Обновлён shader_plugin.cpp и отмечено выполнение задач в TODO.md.
Реализован API AbsoluteVirtualModuleTableV1 и интеграция виртуальных модулей в загрузчик и реестр плагинов. Расширен AbsoluteLanguagePluginV1, добавлены структуры для semantic context, типов и владения ресурсами. Введены функции регистрации и поиска виртуальных модулей. Добавлены юнит- и интеграционные тесты для новых возможностей. В TODO.md отмечено выполнение задач по semantic API и переходу на виртуальные модули.
Расширен plugin_api.h: новые виды артефактов, backend и build graph API, структура AbsoluteCacheKeyV1. В Absolute-Compiler.cpp реализована интеграция виртуальных модулей плагинов. В math_plugin.cpp зарегистрирован пример виртуального модуля и экспортированы новые функции для интеграции. Добавлен юнит-тест для новых структур и обновлён интеграционный тест с использованием виртуального модуля. В TODO.md отмечены завершённые задачи по этим изменениям.
В Absolute-Compiler.cpp реализован вывод времени сборки исполняемого файла. В plugin_api.h расширен API: добавлены структуры для IDE, отладчика, политики разрешений и режимы изоляции. В run-desktop.ps1 добавлена инициализация среды Visual Studio, сборка и подключение Absolute-Math-Plugin. В plugin_api_unit_tests.cpp добавлен тест для новых структур API (P3).
…ueue, and HashMap
…cross collections
…adoptRaw, retainRaw, borrowRaw, share, Control Block)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.