Skip to content

[pull] master from GaijinEntertainment:master#975

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

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

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 9, 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 : )

borisbat and others added 13 commits May 9, 2026 08:37
The MCP tools list_module_api, describe_type, and eval_expression
took a module-name parameter but failed when given a single-token
name like "ast" because there is no top-level `ast` module — it
lives at `daslib/ast`. Even the tools' own descriptions used "ast"
as an example.

On compile failure when the supplied name has no `/`, retry once
with `daslib/<name>` prepended. Successful retries prepend a
`[resolved 'X' as 'daslib/X']` line so the rewrite stays visible
to the caller (and typos like `mat` still surface as plain errors,
since `daslib/mat` doesn't exist either).

Also fix all pre-existing lint warnings in the touched files
(LINT003 var→let, PERF007 string(das_string)==, PERF017 length>0,
STYLE016 mergeable guards) per upcoming PR-gate policy.

Tests added: rewrite + already-qualified no-rewrite cases for each
of the three tools.

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

Bugfix
------
findModuleCallMacro deref'd the result of Module::findCall without
null-checking. For unregistered call_macro names this crashed with
EXCEPTION_ACCESS_VIOLATION. Add the null check; find_call_macro is
now a safe soft-probe that returns null on miss.

Macro regression coverage (tests/macro_call/)
---------------------------------------------
- test_find_call_macro_null - covers the bugfix above
- test_dyn_register_call_macro - function_macro that registers a
  per-decl call_macro instance from inside its apply()
- test_call_macro_emit_gate - call_macro that gates add_variable on
  a find_variable miss (auto-emit module global, idempotent)

These tests pin three patterns the dasImgui [widget] macro relies on;
breaking any of them would silently regress dasImgui's call dispatch.

Task wrap-up skill + MOUSE FIRST hard rule
------------------------------------------
- New skills/task_wrap_up.md - blind-mouse curation pass for any
  major task wrap, not just PRs. Three steps: review log,
  surface the un-asked, cost calculus.
- skills/make_pr.md section 5.5 collapsed to a pointer at task_wrap_up.md.
- CLAUDE.md gains a row in the skill table and a "MOUSE FIRST
  (hard rule)" section at the bottom: mouse__ask is the first tool
  on any pattern/why/how question, before Explore/Grep/Read.

Plus 9 mouse-data/docs/ entries seeded during dasImgui Phase 0a:
reload firing-order, C++-resource preservation across reload,
ImGui backend-data-survives-ctx-roundtrip, plus six macro / daspkg
patterns surfaced during the same session.

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

mcp: auto-retry unqualified module names under daslib/
…bugfix-and-coverage

fix: find_call_macro null-deref + macro_call regression tests + task_wrap_up skill
…in linux_arm CI

build.yml no longer uploads `daslang-<platform>-<arch>.zip` (release.yml is the
sole release publisher) — also kills the empty-name `daslang--.zip` that
sanitizer rows produced via clobbering uploads.

linux_arm Release in build.yml now enables `dasHV` and `dasSQLITE` to mirror
release.yml's module set, so the LLVM AArch64 SelectionDAG hang seen in the
v0.6.2-RC2 release run reproduces in regular CI. The linux_arm test step
drops `--failures-only` on JIT so PASS lines name each test as it finishes —
the file running just before the hung one will be the last PASS printed.

Also threads the five post-RC2 PRs (#2611, #2612, #2614, #2616, #2617) into
CHANGELIST.md and the site/index.html change list, with a May 9 News entry.

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

ci: stop publishing non-bundled release zips; mirror release modules in linux_arm CI
…0.6.2-RC3

The `linux_arm × arm64` exclude at release.yml:125-126 was dead matrix overlap —
the active linux ARM64 release build is the `linux_arm × 64` cell (which maps
to `release_arch: arm64`). Remove the redundant exclude.

Add a May 9 News entry pointing at v0.6.2-RC3.

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

Removing the exclude in dcb0b11 was a mistake — the cell has no valid
build path. The linux_arm target's runner is already ARM64 hardware
(ubuntu-24.04-arm-fat) and the linux_arm × 64 cell produces release_arch:
arm64 via the include block. The ×arm64 cell would fall through to the *)
case which applies -DCMAKE_OSX_ARCHITECTURES with no architecture_string —
invalid on Linux. Restore the exclude with a comment so this doesn't get
"cleaned up" again.

v0.6.2-RC3 still shipped daslang-bundle-linux-arm64.zip (from the linux_arm
× 64 cell, which passed); fail-fast: false kept the parallel cells alive
when the bogus one failed.

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

Earlier comment guessed at CMAKE_OSX_ARCHITECTURES being the breakage —
that's harmless on Linux. The real reason from RC3's failed cell log:
the install-deps step at L147 gates apt-get on `linux64|linux_arm64`,
which doesn't match `linux_armarm64` (target+architecture concat for the
×arm64 cell). The cell skipped apt-get entirely → no OpenGL libs → dasGlfw
find_package(OpenGL) failed at configure.

Updated comment so the next person reading this knows what would actually
need to change to enable the cell.

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

Install-deps gate widens from `linux64|linux_arm64` to `linux64|linux_arm*`.
Defensive future-proofing: the linux_arm × arm64 cell stays excluded, but if
anyone lifts that exclude they don't trip on missing OpenGL deps the way RC3
did. No behavior change in the current matrix — `linux_arm × 64` already
matched the prior pattern.

Also rewrites the exclude comment with the actual reason to keep it excluded:
the include overlay at L53-57 sets release_arch: arm64 for all linux_arm
cells regardless of architecture, so a ×arm64 cell would clobber the same
bundle name (daslang-bundle-linux-arm64.zip) on the same ARM64 hardware via
gh release upload --clobber. Wasted CI for no extra artifact.

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

skills/task_wrap_up.md: replace Windows-specific `bin/Release/daslang.exe`
with the cross-platform `bin/daslang` form, with a parenthetical for the
Windows MSVC layout. Match the convention other skills use.

mouse-data/docs: add an answer for "How do I identify which test is hanging
when dastest -jit times out in CI?" — captures the diagnostic technique
discovered while triaging the v0.6.2-RC2 release-only linux ARM64 timeout
(drop --failures-only, the most recent PASS line names the predecessor).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a full C API surface for constructing, populating and passing
array<T> / table<K;V> values across the C boundary, plus tutorial 14
exercising the borrowed-buffer and context-owned ownership patterns.

  * das_array / das_table layout in daScriptC.h synced to mirror
    das::Array / das::Table exactly (was missing the runtime's `magic`
    field, leaving `lock` / `flags` reads at the wrong offsets from C).
    Compile-time static_assert(sizeof) + offsetof checks in
    daScriptC.cpp now guard against future drift.

  * das_context_allocate / _reallocate / _free — main-heap C wrappers
    around Context::allocate/_reallocate/free.

  * das_array_init / _init_borrowed / _reserve / _resize / _clear /
    _at / _lock / _unlock — full array lifecycle from C.

  * das_table_init / _reserve / _clear / _find / _insert / _erase /
    _lock / _unlock with DAS_TYPE_* key-type dispatch routing to the
    existing TableHash<K> instantiations.

  * das_argument_array / _table and das_result_array / _table
    (aligned + unaligned) for piping pointers through vec4f.

  * Tutorial 14 (tutorials/integration/c/14_passing_arrays.{c,das} +
    RST) demonstrates: (a) C-owned data via das_array_init_borrowed
    with daslang's array<int># temporary type, (b) context-heap-owned
    array grown by daslang and read back through das_array_at, (c)
    table fill via daslang and lookup via das_table_find.

  * tests-cpp/small/test_c_array_table_api.cpp covers the layout
    canary, heap, both ownership flavors, lock/unlock, and table
    insert/find/erase across multiple key types.

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

feat: c-api arrays/tables + tutorial 14 (passing arrays from C)
@pull pull Bot locked and limited conversation to collaborators May 9, 2026
@pull pull Bot added the ⤵️ pull label May 9, 2026
@pull pull Bot merged commit 91f6b04 into forksnd:master May 9, 2026
1 of 5 checks passed
@pull pull Bot had a problem deploying to github-pages May 9, 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.

1 participant