Skip to content

[pull] master from GaijinEntertainment:master#986

Merged
pull[bot] merged 13 commits into
forksnd:masterfrom
GaijinEntertainment:master
May 12, 2026
Merged

[pull] master from GaijinEntertainment:master#986
pull[bot] merged 13 commits into
forksnd:masterfrom
GaijinEntertainment:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 12, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

aleksisch and others added 13 commits May 8, 2026 18:39
Runtime things are not connected to simulate.
ModuleGroup annotation was declared in incorrect module
This function depends on AST and implemented in AST module.
It's incorrect to export it through JIT module.
No need to call it from builtin.cpp. Static initialization
will happen at startup and launch this check.
Same way we did with imgui. Allow to set input, output, path to
library for llvm C-API binder.
Prebuilt LLVM.dll bundles ship different curated target sets per platform.
The Windows build, in particular, omits Initialize{Disassembler,AsmPrinter}
for {SystemZ, M68k, VE, Xtensa, XCore, Sparc}; macOS prebuilts vary similarly.
Binding all 18 per-target LLVMInitialize<X>* symbols means the das extern
declarations fail to load at compile time on platforms whose LLVM.dll
doesn't export every variant, even though daslib's JIT only ever needs the
host target.

bind_llvm.das gets a single `universal_targets` allow-list (X86, AArch64,
ARM) — anything else is filtered at regen time. Covers the suffix family
{TargetInfo, Target, TargetMC, AsmPrinter, AsmParser, Disassembler}.
modules/dasLLVM/bindings/llvm_func.das is regenerated accordingly.
modules/dasLLVM/daslib/llvm_targets.das is trimmed to the same three
targets so LLVMInitializeAllTargetInfos/Targets/TargetMCs/AsmPrinters
only call symbols that are guaranteed to exist.

This is sufficient for native JIT on every platform we ship (Linux x86_64
and arm64, macOS arm64, Windows x86_64). Cross-target codegen would need
a wider list — add the target to universal_targets in both bind_llvm.das
and llvm_targets.das and verify every prebuilt exports it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LLVM was updated to 22 version. Updated llvm bindings in this
commit.
The prebuilt LLVM.dll for macOS arm64 hardcodes
/opt/homebrew/opt/z3/lib/libz3.4.15.dylib as a dynamic dependency (z3
solver, enabled by default in upstream LLVM builds). CI macOS runners
don't have z3 installed, so dlopen("LLVM.dll") fails with:

  Library not loaded: /opt/homebrew/opt/z3/lib/libz3.4.15.dylib

and every dasLLVM extern fails to apply. Add `brew install z3` to the
darwin15/darwin26 install step in both build.yml and extended_checks.yml.
Homebrew currently ships z3 4.15.x which matches the encoded
install_name.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
darwin15 x86_64 do not introduce new architecture/os and very
unlikely could trigger any new bugs. Moreover, it's deprecated,
free github runner no longer support it. Let's remove it from CI.
Five new cards from the dasImgui indexed-widgets session (2026-05-12):

- how-do-indexed-table-keyed-dasimgui-widgets-work — end-to-end
  walkthrough of the table-keyed widget form (`slider_float(t[k], …)`):
  user-declared `table<K; StateT>`, per-(kind, IDENT) wrapper, snapshot
  path naming, hot-reload story, snapshot expiration for removed keys,
  V1 restrictions (no init/bounds sugar, no flags, locked-table
  gotcha, radio_button_int exemption).
- how-do-init-and-bounds-named-args-work — `bounds=` (state-field name
  match) and `init=` (rename to `value`) sugar for single-global widget
  calls, pumped into ExprMakeStruct(useInitializer) at module init,
  stripped from the call; indexed form rejects.
- why-does-clone-type-func-result-stored-on-a-call-macro-class-field —
  TypeDeclPtr fields on AstCallMacro classes get pointer-aliased
  between compile passes; stash FunctionPtr/StructurePtr and clone the
  type at visit time instead.
- why-does-find-widget-snap-ident-null-give-wrong-results — daslib/json
  `?[]` returns JV(null) placeholder for missing keys, so
  `find_widget(snap, ident) != null` is always true; use
  `widget_exists(snap, ident)` for existence checks.
- why-does-for-k-in-keys-t-panic — `for keys(t)` / `values(t)` locks
  the table; `t[k]` inside the body is auto-insert and trips the lock
  even when k exists. Snapshot keys to a local array first.

Plus the slider min/max card got updated to point at the new
`bounds=`/`init=` sugar (with the imperative pattern retained for the
indexed-form case).

Three older cards land in this commit too (uncommitted from prior
sessions — daslang sort is qsort, per-frame array delete, shared-module
native-path require, daspkg release CI). All present in
~/.claude/projects/d--Work-daScript/memory as feedback entries; just
syncing the mouse cache to disk.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ary-splits

Aleksisch/more library splits
@pull pull Bot locked and limited conversation to collaborators May 12, 2026
@pull pull Bot added the ⤵️ pull label May 12, 2026
@pull pull Bot merged commit 250b1a8 into forksnd:master May 12, 2026
@pull pull Bot had a problem deploying to github-pages May 12, 2026 20:58 Error
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants