Skip to content

feat(core): implement Aegis bootstrap foundation#14

Merged
zombocoder merged 12 commits into
zombocoder:mainfrom
sashml:feat/aegis-foundation-upstream
Apr 28, 2026
Merged

feat(core): implement Aegis bootstrap foundation#14
zombocoder merged 12 commits into
zombocoder:mainfrom
sashml:feat/aegis-foundation-upstream

Conversation

@sashml
Copy link
Copy Markdown
Contributor

@sashml sashml commented Apr 27, 2026

This PR introduces the foundational systems for the Aegis Operations engine, ensuring full cross-platform compliance (including Windows/MSVC).

Features

  • Native AST Reflection: \CompilerLibrary\ for introspection.
  • Binary I/O: High-performance \BinaryLibrary\ (ByteBuffer).
  • Bit Intrinsics: LLVM-equivalent bit manipulation via \BitLibrary.
  • Parser Enhancements: Recursive generic types and hex literals.
  • Null Support: First-class
    ull\ support across Lexer, Parser, and Runtime.

Note: This PR is built cleanly on top of the cross-platform MSVC foundation (PR #13) to guarantee it compiles on Windows without inheritance or linking errors.

sashml and others added 12 commits April 27, 2026 03:34
- Add .gitattributes to enforce LF line endings and UTF-8 without BOM
- Introduce O2L_HAS_INT128 macro and is_long_ flag in Value to handle
  platforms without __int128 (MSVC/Windows)
- Add holds_Int_Value/get_Int_Value/holds_Long_Value/get_Long_Value
  helpers for MSVC-safe variant access throughout all AST/Runtime files
- Replace hardcoded variant index switch in ComparisonNode with
  type-safe holds_alternative chain to fix bad_variant_access on Windows
- Fix JsonLibrary.cpp: revert 6 call sites back to holds_alternative<Int>
  for JsonValue contexts (distinct type from o2l::Value)
- Fix tools/o2l-lsp-server/main.cpp: add popen/pclose aliases for MSVC
- Add wininet and ws2_32 link targets for Windows in tests/CMakeLists.txt
- Guard Unix-only path assertions in test_system_fs_path.cpp with
  _WIN32 ifdefs
- Guard Int/Long identity tests in test_runtime.cpp with O2L_HAS_INT128
- Guard LongToIntConversion test with O2L_HAS_INT128 (Long==Int on MSVC)
- Update README with Windows build instructions and CHANGELOG entry

Closes zombocoder#2
- Implement Native AST Reflection via CompilerLibrary
- Implement high-performance Binary I/O via BinaryLibrary (ByteBuffer)
- Implement LLVM-equivalent bit manipulation intrinsics via BitLibrary
- Add support for recursive generic types and hex literals in Parser
- Implement first-class null support across Lexer, Parser, and Runtime
- Transition toolchain to Clang 18 / LLVM 18 with libc++
- Verify foundation via self_lexer.obq bootstrap script
…tency

- Parser.cpp: handle RSHIFT ('>>') in parseTypeName() by splitting it into
  two GREATER_THAN tokens, fixing 'Expected >' errors for nested generics
  like Map<Text, List<Int>> and List<Map<Text, Set<Int>>>
- MethodCallNode.cpp: fix Text.toDouble() and Bool.toDouble() to return
  Double instead of Float, consistent with Int/Long.toDouble()
- test_type_conversions.cpp: update all toDouble assertions and fixtures
  to expect Double (not Float); guard LongToIntConversion with O2L_HAS_INT128
@zombocoder zombocoder merged commit 90207e2 into zombocoder:main Apr 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants