gingerBill
b57da82909
Find the global initialization order from a sorted array of the ready variables and a heap for those ready later and build the predecessors in its task rather than on the main thread
2026-10-05 10:55:13 +01:00
gingerBill
0e9c80985b
Overlap the entity graph's setup with later stages, collect the min dep type info per thread without a lock (skipping polymorphic parameters) and hash it in parallel, and format 64-bit big ints directly
2026-10-05 10:30:24 +01:00
gingerBill
a7bca01b58
Add task groups to the thread pool so that a stage waits only for its own tasks; overlap the scope usages and the cycle checks with the stages after them
2026-10-05 09:14:39 +01:00
gingerBill
95f3194c08
Divvy out the entity graph's edge searches one node at a time and empty each search's visited set by what was put in it
2026-10-05 08:54:24 +01:00
gingerBill
92fbab1b5a
Find the global initialization order alongside the minimum dependency set as only the backend reads it
2026-10-05 08:37:49 +01:00
gingerBill
ba17318ff6
For the min dep set, do not record local variables, constants, or labels
2026-10-05 08:25:20 +01:00
gingerBill
5adc9426a1
Mark the min dep set's entities with no declaration without walking them, skip the type info lock for types already added, and split the walk into tasks sooner
2026-10-05 00:52:07 +01:00
gingerBill
003e64ca4b
Sort the lazily checked entities with natural_merge_sort too
2026-10-05 00:17:37 +01:00
gingerBill
5a2f09b002
Add natural_merge_sort in sort.cpp and use it to sort the global entities
2026-10-05 00:15:41 +01:00
gingerBill
6abf51b621
Add untyped expression values in parallel with a thread_pool_for_chunks helper shared with the cycle scan
2026-10-04 23:53:55 +01:00
gingerBill
caefb4809d
Remove add_type_info_for_type_definitions which ran before any minimum dependency count was set and so never added anything
2026-10-04 23:39:12 +01:00
gingerBill
043890d609
Check for type and inline cycles in one parallel pass over the definitions
2026-10-04 23:34:28 +01:00
gingerBill
07b984f9c9
Correct type aliases per package in parallel, visiting only constants of an identifier
2026-10-04 22:34:00 +01:00
gingerBill
9a521c6064
Check file scope directives in parallel once every global entity has been checked
2026-10-04 21:50:44 +01:00
gingerBill
707c314aaa
Remove the global locks from resolving import paths and queue an import's package as soon as the import is parsed
2026-10-04 20:12:59 +01:00
gingerBill
e774d7954c
Allow the compiler with slightly older forms of the compiler which only have default_hasher and not default_hasher_fixed
2026-10-04 19:36:19 +01:00
gingerBill
bdb0364739
Remove the missing procedures fallback from the backend: the checker adds the Objective-C runtime procedures the backend calls, local foreign procedures with a duplicate name are bound to the existing declaration, and local procedures passed to a $ parameter are created up front
2026-10-03 22:26:08 +01:00
gingerBill
5795183b75
Queue a polymorphic specialization's body when it is first used rather than when it is generated, so the minimum dependency set is only generated once; assert that every body in it was checked rather than checking any missed ones late
2026-10-03 19:37:26 +01:00
gingerBill
32f30c3eb3
Tokenize whilst parsing rather than storing every token of a file first
2026-10-03 16:03:59 +01:00
gingerBill
5031e2733e
Add the comparison procedures of types in the type table and map keys as dependencies making the backend no longer has to create missing procedures
2026-10-03 12:38:00 +01:00
gingerBill
c628768c5e
Strip constant parameters from specialized procedure types; fix calling a parenthesized polymorphic callee
2026-10-02 23:11:13 +01:00
gingerBill
1d3f982b50
Allow intrinsics.procedure_of on procedures without results or requiring a context; treat a specialized procedure's type as concrete
2026-10-02 17:10:03 +01:00
gingerBill
14950b8ae9
Park nested procedures on their parent until its body is checked instead of re-queuing; per-entry #load caches and parallel #load_directory reads; don't merge dependencies into package-level declarations; separate the thread pool's contended fields onto their own cache lines
2026-10-02 12:55:09 +01:00
gingerBill
ff9d3584f4
Per-thread arrays instead of MPSC queues for entities, definitions and untyped expressions; walk the minimum dependency set from per-task stacks, and scan its root definitions in parallel
2026-10-02 12:07:06 +01:00
gingerBill
5fbcbd17da
Compare entity source order by each file's index in its package rather than its name; search the initialization-order graph's edges in parallel
2026-10-02 11:44:50 +01:00
gingerBill
0de3f92449
Thread pool: wake one sleeping worker per task instead of all, spin briefly before sleeping; walk the procedure dependency tree in chunks
2026-10-02 11:24:28 +01:00
gingerBill
c494c7a503
Check global entity groups in parallel
...
* CAS-claimed entities, cycle-safe waits for entities and records, lazy entities without lazy_mutex
* Build union type names only on error, take the error block only to report proc group overload errors
2026-10-01 23:17:34 +01:00
gingerBill
5f579a1a10
Fix numerous race conditions: clone polymorphic defaults per call, evaluate foreign import attributes after collection, own dependencies for record instances, sorted Objective-C emission, no debug line for anonymous records
2026-10-01 21:55:25 +01:00
gingerBill
73c3a96de1
Make global checking state thread-safe: read-only global scopes, per-group untyped and #soa, deferred link-name checks, fresh contexts for on-demand globals
2026-10-01 21:07:41 +01:00
gingerBill
66c4fe1d49
Decide cycles of global whens by trying every choice of their branches; ambiguous or contradictory cycles are errors
2026-10-01 18:49:51 +01:00
gingerBill
f7ee910f93
Merge checker_global_*.cpp into checker_global.cpp; base -internal-global-entity-graph on the scheduled groups
2026-10-01 17:43:03 +01:00
gingerBill
63bd49c88b
Add -internal-check-global-edges; Check global entities in dependency-ordered groups of a syntactic graph
2026-10-01 17:28:38 +01:00
gingerBill
2b90b616e1
Add -vet-when-shadowing; Resolve global whens and foreign blocks on demand via name placeholders
2026-10-01 16:28:12 +01:00
gingerBill
5f6e95a620
Don't treat a global naming itself as an initialization cycle (fixes test_issue_6621)
2026-10-01 15:26:45 +01:00
gingerBill
38fa57e907
Make global checking and codegen order-independent
2026-10-01 15:01:14 +01:00
gingerBill
b06c5ffa70
Add -internal-global-entity-graph; Fix union type inference bug
2026-10-01 13:42:32 +01:00
gingerBill
66111934c3
Allow parapoly procs to be in @(deferred_*) attributes
2026-10-01 01:17:40 +01:00
gingerBill
3b9ef40fae
Clean up comments and add more wait signal guards for union variants
2026-09-30 15:53:31 +01:00
gingerBill
29b681b43d
Handle more cases where ExactValue_Float was being handled but not for ExactValue_Rational
2026-09-29 15:21:00 +01:00
Louis Novy
fc8b49f5f5
Fix the same $ procedure argument generating duplicate instantiations
2026-09-27 10:40:33 -04:00
gingerBill
07b5c2ee0f
Support enable_target_feature and require_target_feature for asm templates
2026-08-31 16:39:17 +01:00
kalsprite
f17c86d936
diagnostics: let compiler check error() fmt strings + fixes
2026-08-19 15:39:39 -07:00
gingerBill
a86e523053
Allow for inlineable asm calls
2026-08-18 14:57:34 +01:00
gingerBill
c3b2029f64
Support asm template groups
2026-08-17 19:54:21 +01:00
gingerBill
1f2234a4b2
Merge branch 'master' into bill/inline-asm
2026-08-17 11:44:14 +01:00
kalsprite
55d0aecd92
add missing break on fix dyn
2026-08-16 19:51:27 -07:00
gingerBill
5ac28cdecd
Begin work on semantically type checking asm templates
2026-08-09 18:24:56 +01:00
kalsprite
42bd26cb72
switch ordering
2026-08-07 16:14:12 -07:00
kalsprite
391a862e4f
make tok stable under multi-thread
2026-08-07 15:58:25 -07:00
kalsprite
4780d24836
fix grammar on import name error
2026-08-04 18:26:02 -07:00