[pull] master from GaijinEntertainment:master#1106
Merged
Conversation
The qmacro iterator tag only parsed in the FIRST slot of a multi-name list - later slots of a multi-source for, a multi-name let, or a shared-type block argument group were grammar errors. Downstream was already per-slot ready for for-loops (iteratorsTags, templates_boost lowering, ast_match), so the for/comprehension/block fix is five new continuation arms (3x ds2_parser, 2x ds_parser; gen1's for and comprehensions share variable_name_with_pos_list). Let declarations needed a transport: the front tag travels as an ExprTag wrapper around the whole ExprLet, so later tagged slots now carry per-variable tag+source (same design as block arguments) - ast_Let stamps slots >0, ast_LetList stamps all (its form never had the wrapper; head tags there were silently dropped), and a new preVisitExprLetVariable arm in templates_boost lowers them. The dup check skips tagged names (they all parse to the same placeholder, same rule as ast_makeBlock). With the natural form working, the two shipped workarounds are gone: ZipShape carries gensym itAName/itBName instead of literal itA/itB, and build_table_walk uses gensym kIter/vIter instead of _tab_kv_key_/_tab_kv_value_ - no emission-shape change, kills the user-name-collision risk inside generated invokes. The make_for_loop helper proposed in #3096 is deliberately dropped: with $i in every slot the natural qmacro form covers all static shapes, and the only dynamic-count consumer (decs_boost append_iterator) already has its local builder. - tests/template/test_multislot_i_tags.das pins the five shapes - reification.rst documents multi-slot $i with a compiled example - linq_fold.md gets the dated journal entry Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…i-slot-iterator-tags parser, daslib: accept $i(...) in every name-list slot
… runtime Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
#2580) The segfault as filed (unconditional context->to_err in the registrator-missing and build-id-mismatch branches with the nullptr context that JIT/standalone callers pass) was already fixed en passant: a03cb39 guarded those two branches, 1b077a7 finished the dlopen branch. What remained was the inverse hole - with no context a loadable-but-broken artifact failed completely silently: the standalone exe discards jit_register_dynamic_module_resolve's return, so a corrupt .shared_module or build-id mismatch at exe startup surfaced as nothing at all (unless DAS_TRACE_MODULE_LOAD=1). Same for retry_pending_dynamic_modules. Every report site now falls back to LOG(error) when there is no context. The issue's suggested fix - honoring Quiet in those branches - is deliberately rejected: Quiet governs LOAD failures (expected during folder-scan enumeration, deferred for fixed-point retry); a broken artifact is unfixable by retry, and silencing it recreates the misleading-20605 class of swallowed diagnostics. Contract pinned in the function-head and enum comments. tests-cpp/small/test_register_dynamic_module.cpp pins the no-crash + nullptr-return properties for all three on_error modes with a null context, plus the non-Quiet dlopen-failure path. While validating: exe_paths_module_resolve only ever passed via PATH leakage - the compiled exe import-links libDaScriptDyn_runtime.dll, but no test layout shipped it (a since-deleted SDK install on PATH had been supplying it; exit 0xc0000135 once it vanished). run_layouts.cmake now ships the runtime DLLs next to the exe in every layout, mirroring daspkg release step 2.5, so the test validates genuinely self-contained bundles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
format (writer + string forms) is snprintf-based printf-%% and deprecated; only fmt is colon-spec and panics on %%-form. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
das math's atan2(y, x) is spelled atan(y, x) in GLSL; without the mapping a transpiled shader calling atan2 fails to compile at runtime. Same class of entry as floori->floor and lerp->mix. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dynmod-quiet-contract fio: report broken dynamic-module artifacts when context is null
glsl: map atan2 to GLSL atan in the function rename table
The parallel dispatcher in utils/jit/main.das was modeled on dastest's isolated-mode worker pool but dropped the final `completion |> join()` (dastest.das:743). Without it, draining the output channel is the only synchronization main has: the last worker's final `outputChannel |> notify()` lets main exit the with_job_status block while that worker is still between the notify and its `completion |> notify_and_release()` - so the AddReleaseGuard fires "synch primitive deleted while being used (ref=1)" and the process traps (exit 133). Seen on the linux Release "Prewarm JIT cache" CI step of PR #3122 (a doc-only PR). The join is sufficient: NotifyAndRelease drops the worker's ref before waking the waiter, both under one mutex, and each worker releases both channels before notifying completion, so the outer with_channel guards are covered too. Every other with_job_status dispatcher in the tree already joins (dastest, parallel_workers, dasfmt, with_wait_group, pathTracer); jit was the lone outlier. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-spec-doc
skills/strings: fmt spec is colon-prefixed (":.2f"), %-form panics at runtime
…l-join jit: join the completion status before leaving run_parallel
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
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 : )