Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
287 commits
Select commit Hold shift + click to select a range
87bde72
Composable Records: SizeOf/BitSizeOf honour per-field `size N`
fibodevy May 23, 2026
185cab0
Composable Records: widen per-field align storage from shortint to lo…
fibodevy May 23, 2026
05aa7fe
ci: publish nightly via delete-then-create instead of allowUpdates
fibodevy May 23, 2026
e3f9c67
fix `composable_records_sizeof_perfield_override_01`: drop `size N` o…
fibodevy May 24, 2026
a6a894e
defcmp: report tuple shape-match as te_exact
fibodevy May 25, 2026
36f353a
accept structurally-equal anonymous return type between forward and impl
fibodevy May 26, 2026
c453e44
guard record-enum redirect against nil defowner during PPU load
fibodevy May 26, 2026
045e16d
enable `implicitgenerics` modeswitch by default in `unleashed` mode
fibodevy May 26, 2026
f14e33b
add `--striprtti` CLI flag for project-wide RTTI stripping
fibodevy May 26, 2026
aa9c569
accept binary op after parenthesized first element in array literal
fibodevy May 26, 2026
be438f9
expand array[N] to array[0..N-1] under unleashed mode
fibodevy May 27, 2026
fc01d2f
rework Extra Improvements in both README index pages
fibodevy May 28, 2026
f3b7c2b
add official installer as Option 1 in Installation section
fibodevy May 28, 2026
bd30ef5
docs: introduced functions/intrinsics reference + README entry
fibodevy May 30, 2026
a4c8a53
fix anon-fn capture of inline vars declared in begin..end
fibodevy May 30, 2026
f028ed8
default to intel asmmode under {$mode unleashed} on x86 family
fibodevy May 30, 2026
a8b7cb0
add `SwapValues(a,b)` intrinsic: swap two variables, no SysUtils needed
fibodevy May 30, 2026
3b9b0ec
docs: SwapValues intrinsic
fibodevy May 30, 2026
d85257b
tests: SwapValues coverage
fibodevy May 30, 2026
0704ed4
Merge branch 'feat/swapvalues'
fibodevy May 30, 2026
602bdff
composablerecords: fix IE 200310221 on PPU reload of records with per…
fibodevy May 31, 2026
3a41453
anonfn: fix IE 2020050302 on managed inline var in nested block
fibodevy Jun 2, 2026
1bfd1dc
match-expression: fix `_:` + else/otherwise crash, treat both as term…
fibodevy Jun 2, 2026
bd6f642
case-expression: hint at else/otherwise when coverage incomplete
fibodevy Jun 4, 2026
07ccbee
auto-enable `FPC_SOFT_FPUX80` on x86_64 hosts without extended
fibodevy May 31, 2026
d3a48e9
add x86_64-nativent target
fibodevy May 31, 2026
a5102e7
rtl/nativent: build for x86_64-nativent
fibodevy May 31, 2026
ab6e1fb
fpcmake: support x86_64-nativent target
fibodevy May 31, 2026
bc0863a
add x86_64-nativent to `systems_peoptplus`
fibodevy May 31, 2026
dfd1f03
x86_64-nativent: use Microsoft x64 ABI instead of SysV
fibodevy May 31, 2026
15f1634
x86_64-nativent sysinfo: drop dead `tf_use_function_relative_addresses`
fibodevy May 31, 2026
05beebd
x86_64-nativent: use RIP-relative addressing for data refs
fibodevy May 31, 2026
122f0d2
add `--rtl=<path>` to pre-build a freestanding RTL from source
fibodevy Jun 1, 2026
7679047
fix IE 2026032615 in `--rtl` pre-build under `-B`
fibodevy Jun 1, 2026
b19cb71
nativent: produce `.sys` artifacts by default
fibodevy Jun 1, 2026
9f97b7b
nativent: use SEH for try-except so hardware faults are catchable
fibodevy Jun 2, 2026
d7ff5a6
add `$entrypoint X` directive to override the linker entry symbol
fibodevy Jun 4, 2026
5674e1d
Merge branch 'feat/nativent'
fibodevy Jun 5, 2026
48cf19a
add missing `Targets` entry for x86_64-nativent in ppudump
fibodevy Jun 6, 2026
d70949e
add `staticsection` and `inlinestatic` modeswitches
fibodevy Jun 6, 2026
8cbd0a5
add `static` declaration section in function/procedure bodies
fibodevy Jun 6, 2026
12b54b6
add inline `static name := ...` declaration in statement bodies
fibodevy Jun 6, 2026
70419b9
tests: static section - body decl, persistence, zero-init, type infer…
fibodevy Jun 6, 2026
ebe3e37
tests: inline static - inferred, explicit type, persistence, runtime …
fibodevy Jun 6, 2026
207dafc
docs: static section + inline static reference + README
fibodevy Jun 6, 2026
7209e3e
Merge branch 'feat/static'
fibodevy Jun 6, 2026
913c287
fold compile-time-constant inline `static` init into the data segment
fibodevy Jun 6, 2026
d3237c7
docs: inline static with const init has zero runtime cost
fibodevy Jun 6, 2026
93d16d2
suppress uninitialized-variable warning for the inline `static` runti…
fibodevy Jun 7, 2026
0087196
allow nested generic methods in unleashed mode
fibodevy Jun 8, 2026
4560bbf
implicitgenerics: resolve a generic specialization used as an operato…
fibodevy Jun 8, 2026
a5dc051
fix: report local var shadowing a generic type parameter as duplicate
fibodevy Jun 8, 2026
009439a
grbtree: rename local `t` clashing with type parameter `T`
fibodevy Jun 8, 2026
79b640d
Update README.md
fibodevy Jun 8, 2026
ca22e00
fix value parameter aliasing in nested inlining
fibodevy Jun 10, 2026
de932dc
fix IE 200601232 on a parse error inside a record body
fibodevy Jun 10, 2026
fba16d6
add `$'...'` string interpolation
fibodevy May 30, 2026
d952239
add `expr:mask` formatting in string interpolation
fibodevy May 30, 2026
d78fa7c
allow nested `$'...'` inside interpolation expressions
fibodevy Apr 18, 2026
2e6efc2
handle doubled `''` apostrophe inside `$'...'`
fibodevy May 30, 2026
450e24a
separate token for interp text fragments from expression strings
fibodevy May 30, 2026
7478502
default interp format spec to invariant locale, `L` for system locale
fibodevy May 30, 2026
2116548
enable `typehelpers` and `multihelpers` modeswitches in `unleashed`
fibodevy Apr 19, 2026
e339668
auto-dispatch `{expr}` via ToString / ClassName / typename
fibodevy May 30, 2026
0e8b7e7
docs: string interpolation
fibodevy May 30, 2026
c305d4f
tests: string interpolation
fibodevy May 30, 2026
3932739
route integer numeric masks through FormatFloat
fibodevy Jun 9, 2026
e155fba
Merge branch 'feat/strinterp'
fibodevy Jun 10, 2026
b07f91b
docs: match range patterns
fibodevy Jun 11, 2026
2a5b1bc
enable goto, C-operators and macros by default in unleashed mode
fibodevy Jun 11, 2026
7b2700e
docs: unleashed defaults goto, C-operators and macros on
fibodevy Jun 11, 2026
4ce1be9
add Type(expr) compile-time intrinsic in `{$mode unleashed}`
fibodevy Jun 10, 2026
2fd044a
tests: Type(expr) intrinsic coverage
fibodevy Jun 10, 2026
fa4cb9d
docs: Type(expr) intrinsic reference + README entries
fibodevy Jun 10, 2026
0964b6e
Merge branch 'feat/type'
fibodevy Jun 12, 2026
d57eb4b
declare `TBytes` in the system unit
fibodevy Jun 14, 2026
baf2925
define `DEBUG` or `RELEASE` from the debug-info switch
fibodevy Jun 15, 2026
dc4c5e2
accept generic const parameter as `array[N]` shorthand bound
fibodevy Jun 15, 2026
980b9ef
testtool: build and run on Linux64
fibodevy Jun 16, 2026
6d70614
add `defern` to the EXTDEBUG `secondnames` node-name array
fibodevy Jun 17, 2026
339cc33
fix IE 2021010301 on implementation-only generic overload
fibodevy Jun 18, 2026
c780785
add `$embedstr` and `$embedbytes` directives to embed a file at compi…
fibodevy Jun 24, 2026
a881a2f
tests: `$embedstr` and `$embedbytes` directives
fibodevy Jun 24, 2026
fba203d
docs: `$embedstr` / `$embedbytes` reference + README entries
fibodevy Jun 24, 2026
62a4ee8
Merge branch 'feat/embed'
fibodevy Jun 24, 2026
4ed208f
add `threadstatic` modeswitch
fibodevy Jun 8, 2026
94e80e6
add inline `threadstatic name := ...` for per-thread state
fibodevy Jun 8, 2026
5427392
tests: threadstatic - basic, per-thread, runtime init, types, FAIL, s…
fibodevy Jun 8, 2026
14f708c
docs: threadstatic reference + README + docs index entries
fibodevy Jun 8, 2026
d505789
support `threadstatic` declaration section
fibodevy Jun 8, 2026
abd022f
tests: threadstatic - declaration section form
fibodevy Jun 8, 2026
5b12ade
docs: threadstatic declaration section form + ordering note
fibodevy Jun 8, 2026
96c814b
skip guard for all-zero `threadstatic` initializers
fibodevy Jun 8, 2026
cd706a7
tests: threadstatic - zero-valued section initializers
fibodevy Jun 8, 2026
122ef1d
docs: threadstatic zero-const guard skip
fibodevy Jun 8, 2026
0d0ceea
add `tstatic` as a short alias for `threadstatic`
fibodevy Jun 25, 2026
4e6e407
tests: `tstatic` alias - section and inline forms
fibodevy Jun 25, 2026
6b69a5d
docs: `tstatic` alias for `threadstatic`
fibodevy Jun 25, 2026
a55a781
inline the threadvar relocate fast path on win32/win64
fibodevy Jun 8, 2026
285f90e
docs: threadstatic access is an inlined TEB read on win32/win64
fibodevy Jun 8, 2026
26a0410
dbgdwarf: per-thread location for windows threadvars
fibodevy Jun 25, 2026
4a1f6cc
tests: thread_static - compile with debug info
fibodevy Jun 25, 2026
34cd67c
docs: threadstatic debug info resolves per-thread
fibodevy Jun 25, 2026
24d0619
Merge branch 'feat/threadstatic'
fibodevy Jun 27, 2026
03e4088
add 'autoproperties' modeswitch
fibodevy Jun 15, 2026
550241c
auto-properties: synthesize backing field for accessor-less property
fibodevy Jun 15, 2026
86721a3
report a specific error for read-only/write-only property access
fibodevy Jun 15, 2026
920edc9
auto-properties: 'property X: T = value' initializer seeds the backin…
fibodevy Jun 15, 2026
c672aac
tests: auto-properties - synthesis, directives, RTTI, initializers, e…
fibodevy Jun 15, 2026
70bb863
docs: auto-properties reference + README entry
fibodevy Jun 15, 2026
7fb0e40
auto-properties: configurable backing-field name prefix
fibodevy Jun 28, 2026
367eb5c
tests: auto-properties - field prefix directive and CLI
fibodevy Jun 28, 2026
42b0914
add 'lock' modeswitch
fibodevy Jul 1, 2026
1bb34f2
docs: auto-properties - backing-field prefix override
fibodevy Jun 28, 2026
7d09f7e
parse `lock` and `trylock` statements, lower to critical sections
fibodevy Jul 1, 2026
c3dcfdb
auto-properties: don't crash on dispinterface properties
fibodevy Jun 28, 2026
5f17b5b
tests: lock and trylock - all forms, contention, rollback, exceptions…
fibodevy Jul 1, 2026
7271fa3
Merge branch 'feat/auto-properties'
fibodevy Jun 28, 2026
b263629
add `zeroinit` procedure modifier
fibodevy Jul 1, 2026
bf05d57
docs: lock and trylock reference + README entries
fibodevy Jul 1, 2026
9c31412
tests: zeroinit modifier coverage
fibodevy Jul 1, 2026
ae4bfbf
Merge branch 'feat/lock'
fibodevy Jul 1, 2026
02a1a3d
docs: zeroinit modifier reference + README entry
fibodevy Jul 1, 2026
8de88a3
Merge branch 'feat/zeroinit'
fibodevy Jul 1, 2026
4effc40
zeroinit: cover anonymous compound types via `Default()` fix
fibodevy Jul 2, 2026
7b0fc30
docs: zeroinit - anonymous compounds covered, file locals kept on RTL…
fibodevy Jul 2, 2026
8a110cd
Merge branch 'feat/zeroinit'
fibodevy Jul 2, 2026
148c9dc
add 'asyncawait' modeswitch
fibodevy Jun 13, 2026
b755e63
async: future type, interface, PPU layout
fibodevy Jun 13, 2026
359d7cd
async: parse `async`/`await` and error messages
fibodevy Jun 13, 2026
f9154ba
async: lower the call form (snapshot + spawn)
fibodevy Jun 13, 2026
9e87add
async: lower the block form (capture by ref)
fibodevy Jun 13, 2026
c0b34ff
tests: async/await coverage
fibodevy Jun 13, 2026
e873c29
docs: async/await reference + README entry
fibodevy Jun 13, 2026
8c18716
async: give impl classes unique names
fibodevy Jun 13, 2026
87de85b
async: reject `var`/`out` call arguments
fibodevy Jul 2, 2026
0275eda
async: reject nested routines as a target
fibodevy Jul 2, 2026
0bd35bb
async: support procvar-call targets
fibodevy Jul 2, 2026
8b3be95
async: fix future interning in unit init
fibodevy Jul 2, 2026
f1e3e11
async: cross-module future type identity
fibodevy Jul 2, 2026
38d1b73
async: free future resources in destructor
fibodevy Jul 2, 2026
e3117d5
async: accept generic specialization targets
fibodevy Jul 2, 2026
a7ad1b3
docs: async/await call targets and cleanup
fibodevy Jul 2, 2026
6de368c
testtool: derive -T/-P from compiler -iTO/-iTP
fibodevy Jul 3, 2026
030a913
tests: fix i386 run failures
fibodevy Jul 3, 2026
bff05e1
Merge branch 'feat/async-await'
fibodevy Jul 4, 2026
cef0d30
add 'parallelfor' modeswitch
fibodevy Jun 12, 2026
24e8164
parallelfor: parse and validate `for parallel` header
fibodevy Jul 3, 2026
ede1a3f
parallelfor: hoist the body to a worker, drain with an atomic counter
fibodevy Jul 3, 2026
c5512e0
parallelfor: dispatch the worker across a BeginThread pool
fibodevy Jul 3, 2026
71ef32e
parallelfor: capture and re-raise the first worker exception
fibodevy Jul 3, 2026
e3bb1e5
parallelfor: claim iterations in chunks - `chunk N` clause + auto def…
fibodevy Jul 3, 2026
c31bcce
parallelfor: `WorkerIndex` / `WorkerCount` visible in the body
fibodevy Jul 3, 2026
d339589
parallelfor: hint about cthreads on unix-like targets
fibodevy Jul 3, 2026
f78d5ca
tests: parallelfor - pool dispatch and range forms
fibodevy Jun 12, 2026
eed914c
tests: parallelfor - nested loops and worker exceptions
fibodevy Jun 12, 2026
50f9f06
tests: parallelfor - header rejects
fibodevy Jul 3, 2026
7c39819
tests: parallelfor - cancel semantics and chunk claiming
fibodevy Jul 2, 2026
4c856cc
tests: parallelfor - WorkerIndex and WorkerCount
fibodevy Jul 3, 2026
52295f1
tests: parallelfor - int64/enum/char counters, defer and autofree in …
fibodevy Jul 2, 2026
6a5bcc0
tests: parallelfor - class methods and generics
fibodevy Jul 3, 2026
a386103
docs: parallelfor reference + README entry
fibodevy Jul 3, 2026
77371dd
Merge branch 'feat/parallelfor'
fibodevy Jul 4, 2026
fb91bdd
for-in var: infer AnsiString for string literals
fibodevy Jul 4, 2026
0f4b6d7
docs: for-in string literal inference
fibodevy Jul 4, 2026
a90bfbd
async: `Cancel`, `Cancelled`, `Done`, `ThreadID`
fibodevy Jul 5, 2026
d2d8a48
async: `Cancelled` readable in the block form
fibodevy Jul 5, 2026
335f40d
tests: async - future control members
fibodevy Jul 5, 2026
c464957
docs: async future control members
fibodevy Jul 5, 2026
6d0f03d
parallelfor: fix false unused-proc hint
fibodevy Jul 6, 2026
d9a998c
async: fix false unused-type hint
fibodevy Jul 6, 2026
0487e47
tuples: redo layout once host type completes
fibodevy Jul 6, 2026
bf0bdc4
tuples: reject fields embedding their host
fibodevy Jul 6, 2026
8d57db0
tuples: fix dangling relayout entries
fibodevy Jul 6, 2026
835fa18
fix dynarray + chain aliasing operands (#41087, #41798)
fibodevy Jul 7, 2026
506bfc4
dbgdwarf: init `tvsize` for wasm32 cross build
fibodevy Jul 9, 2026
e9e250b
Merge upstream up to 2bf88900e6
fibodevy Jul 9, 2026
ce247f6
add -OoLICM loop-invariant code motion at -O4
joaopauloschuler Jul 7, 2026
f850297
tests: optlicm loop-invariant code motion coverage
joaopauloschuler Jul 7, 2026
5942317
add -OoLOOPUNSWITCH loop unswitching at -O4
joaopauloschuler Jul 7, 2026
e3c1c8a
add -OoBITIDIOM bit-population-count idiom recognition at -O4
joaopauloschuler Jul 7, 2026
a146378
add -OoRANGEELIM value-range-analysis range-check elimination at -O4
joaopauloschuler Jul 7, 2026
b58a765
add -OoVECTORIZE conservative SSE loop autovectorization
joaopauloschuler Jul 8, 2026
87ef474
Signed mod by non-power-of-two constant: magic-number strength reduction
joaopauloschuler Jul 8, 2026
612dd73
add tzcnt/bsr bit-scan idiom recognition to -OoBITIDIOM at -O4
joaopauloschuler Jul 8, 2026
a417889
strength-reduce loopvar*invariant multiplies inside array-index/point…
joaopauloschuler Jul 8, 2026
b4892c6
add -OoVECTORIZE per-loop vectorization diagnostic (notes 06065/06066)
joaopauloschuler Jul 8, 2026
68259ed
-OoVECTORIZE: add scalar-broadcast and copy element-wise shapes
joaopauloschuler Jul 8, 2026
9a57af0
optdeadstore: extend DSE to record-field and static-array-element stores
joaopauloschuler Jul 8, 2026
6451f6a
aoptx86: sibling-call frame reuse for tail calls from a framed routine
joaopauloschuler Jul 8, 2026
445fbd6
Add -OoJUMPTHREAD jump threading / nested re-test elimination at -O4
joaopauloschuler Jul 8, 2026
fd7296c
opttree: fix normalize() hoisting block-exprs out of control-flow bod…
joaopauloschuler Jul 8, 2026
e203bc3
compiler: make an -O4 stage-2 self-compile build clean (DFA false pos…
joaopauloschuler Jul 8, 2026
d67e6b8
inline vars: infer Double for real-literal init; document Rtti unit b…
joaopauloschuler Jul 8, 2026
77a0277
add -OoLOOPDISTPAT loop-distribution pattern idiom recognition at -O4
joaopauloschuler Jul 8, 2026
babb3b5
add -OoLOOPPEEL full loop peeling of small constant-trip loops at -O4
joaopauloschuler Jul 8, 2026
971e03d
add -OoLOOPSPLIT loop splitting on an induction-variable crossover at…
joaopauloschuler Jul 8, 2026
9293ace
add -OoLOOPFUSE loop fusion of two adjacent same-space loops at -O4
joaopauloschuler Jul 8, 2026
aedba02
add -OoIFCONVERT loop if-conversion to packed maxps/minps at -O4
joaopauloschuler Jul 8, 2026
324f28b
add -OoREASSOC floating-point reduction reassociation at -O4 (fast-ma…
joaopauloschuler Jul 8, 2026
0e1bef5
add -OoUNROLLJAM outer-loop unroll-and-jam at -O4
joaopauloschuler Jul 8, 2026
53f8582
add -OoPREDCOM predictive commoning of cross-iteration reloads at -O4
joaopauloschuler Jul 8, 2026
455f280
add -OoSRA scalar replacement of non-escaping local aggregates at -O4
joaopauloschuler Jul 8, 2026
10b1ba8
add -OoSTOREMERGE adjacent narrow-store coalescing at -O4
joaopauloschuler Jul 8, 2026
a1f1438
add -OoCASECLUSTER gcc-style case clustering at -O4
joaopauloschuler Jul 8, 2026
a6978ea
add -OoCROSSJUMP cross-jumping / tail merging at -O4
joaopauloschuler Jul 8, 2026
8e5adca
add -OoBLOCKORDER static hot/cold basic-block layout at -O4
joaopauloschuler Jul 8, 2026
776b611
add -OoSINK partially-dead code sinking at -O4
joaopauloschuler Jul 8, 2026
c156929
add -OoSTOREMOTION loop store motion / scalar promotion at -O4
joaopauloschuler Jul 8, 2026
8b4171b
add -OoVRP interval value-range propagation with branch folding at -O4
joaopauloschuler Jul 8, 2026
ad73513
add -OoREFELIDE managed refcount elision (opt-in)
joaopauloschuler Jul 8, 2026
a484c09
fix REASSOC miscompile/internalerror when the counter appears in the …
joaopauloschuler Jul 8, 2026
1cb1ab4
add -OoSWITCHTABLE case-to-lookup-table conversion at -O4
joaopauloschuler Jul 8, 2026
62aeea0
add -OoREE redundant sign/zero-extension elimination at -O4
joaopauloschuler Jul 8, 2026
f7f8d2c
add -OoSHRINKWRAP shrink-wrapping (opt-in), sinking a push-only prolo…
joaopauloschuler Jul 8, 2026
cf11e77
add -OoGVNPRE dominator-based global value numbering / full-redundanc…
joaopauloschuler Jul 8, 2026
d4645bc
add Quick Start section to README: compiling programs and Lazarus pro…
joaopauloschuler Jul 8, 2026
0e595fe
add fpc.sh wrapper: invoke in-tree ppcx64 with -O4 and built unit paths
joaopauloschuler Jul 8, 2026
5f238a0
extend -OoVECTORIZE with single-precision sum / dot-product reduction…
joaopauloschuler Jul 8, 2026
e45bbf4
rename fpc.sh to fpcu.sh to avoid confusion with the fpc driver; docu…
joaopauloschuler Jul 8, 2026
b1213a0
drop forced -O4 from fpcu.sh so debug builds stay debuggable; adjust …
joaopauloschuler Jul 8, 2026
a7486cf
add lazbuildu.sh wrapper: lazbuild with the in-tree compiler via fpcu.sh
joaopauloschuler Jul 8, 2026
14f577f
lazbuildu.sh: use the lazbuild on PATH instead of a sibling checkout
joaopauloschuler Jul 8, 2026
cfdeaf5
add -OoPURE interprocedural pure/const discovery, consumed by -OoLICM
joaopauloschuler Jul 8, 2026
1de4a64
add -OoPARTIALINLINE partial inlining / function splitting (procedures)
joaopauloschuler Jul 9, 2026
118bcd0
add -OoSLP superword-level parallelism (SLP) straight-line vectorization
joaopauloschuler Jul 9, 2026
247fba5
add -OoUNROLLDYN dynamic-trip loop unrolling and -OoPREFETCH software…
joaopauloschuler Jul 9, 2026
98d932b
extend -OoPARTIALINLINE partial inlining to functions (non-void return)
joaopauloschuler Jul 9, 2026
e9e4665
-OoGVNPRE: consume the -OoPURE verdict (CSE identical pure calls); br…
joaopauloschuler Jul 9, 2026
ce7d807
add -OoICF identical code folding (opt-in), folding duplicate routine…
joaopauloschuler Jul 9, 2026
4ea8de1
add -OoSTACKALLOC escape-analysis stack allocation of non-escaping lo…
joaopauloschuler Jul 9, 2026
95c7805
add -OoIPARA interprocedural register allocation (opt-in), narrowing …
joaopauloschuler Jul 9, 2026
fe0a4fb
add -OoFINALVALUE final value replacement + dead loop elimination (op…
joaopauloschuler Jul 9, 2026
62275fd
shared cross-unit PPU optimizer summaries: cross-unit -OoPURE + -OoIPARA
joaopauloschuler Jul 9, 2026
39786cb
-OoICF: symbol-alias mode + cross-unit identical code folding
joaopauloschuler Jul 9, 2026
c2a48b0
-OoVECTORIZE: double-precision loop autovectorization (128-bit SSE/AVX)
joaopauloschuler Jul 9, 2026
7ac3c11
-OoPURE: -vh purity hints + read-only method/accessor eligibility
joaopauloschuler Jul 9, 2026
e620c04
Fix cs_opt_level2 const-fold spurious overflow on internal wraparound
joaopauloschuler Jul 9, 2026
4bf0bea
add -OoSIBCALL sibling-call optimization (opt-in)
joaopauloschuler Jul 9, 2026
a7a109c
-OoFINALVALUE: pointer-stride accumulators + multi-statement bodies
joaopauloschuler Jul 9, 2026
26da550
-OoPURE: treat pure/const calls as non-barriers in extended dead-stor…
joaopauloschuler Jul 9, 2026
ad3964f
optvectorize: fix -Oodeadstore x -OoVECTORIZE reduction miscompile (s…
joaopauloschuler Jul 9, 2026
f7be469
-OoFINALVALUE follow-ups: 64-bit counters, -Cr range-check regime, st…
joaopauloschuler Jul 9, 2026
5898a20
-OoSIBCALL: multi-location result forwarding + frame-address escape gate
joaopauloschuler Jul 9, 2026
1f5e957
fixup after cherry-picking main optimizer work: satisfy un_main's str…
joaopauloschuler Jul 9, 2026
c95bce2
testtool: fix run phase on unix targets
joaopauloschuler Jul 9, 2026
fd458d9
opencl: add var-parameter overloads for out-pointer API arguments
joaopauloschuler Jul 10, 2026
2228434
opencl: add var-param overload of clCreateCommandQueue
joaopauloschuler Jul 10, 2026
9473b1c
build scripts: add rebuildu.sh, make lazbuildu.sh use the sibling Laz…
joaopauloschuler Jul 10, 2026
947cd35
rebuildu.sh: clean packages by default
joaopauloschuler Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
130 changes: 130 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: CI

on:
workflow_dispatch:
inputs:
force_build:
description: 'Build even when HEAD already matches the nightly tag'
type: boolean
default: false
schedule:
- cron: '0 0 * * *'

jobs:
check:
runs-on: ubuntu-latest
outputs:
should_build: ${{ steps.check.outputs.should_build }}
steps:
- name: Checkout HEAD only
uses: actions/checkout@v3
with:
fetch-depth: 1

- name: Fetch 'nightly' tag only
run: git fetch origin refs/tags/nightly:refs/tags/nightly || true

- name: Check for changes since nightly
id: check
run: |
if [ "${{ inputs.force_build }}" = "true" ]; then
echo "force_build=true requested, skipping HEAD vs nightly comparison"
echo "should_build=true" >> $GITHUB_OUTPUT
exit 0
fi
if git rev-parse nightly >/dev/null 2>&1; then
nightly_commit=$(git rev-list -n 1 nightly)
head_commit=$(git rev-parse HEAD)
echo "Nightly tag commit: $nightly_commit"
echo "HEAD commit: $head_commit"
if [ "$nightly_commit" = "$head_commit" ]; then
echo "No new commits since nightly release"
echo "should_build=false" >> $GITHUB_OUTPUT
else
echo "New commits found since nightly release"
echo "should_build=true" >> $GITHUB_OUTPUT
fi
else
echo "No 'nightly' tag found - will build"
echo "should_build=true" >> $GITHUB_OUTPUT
fi

windows:
needs: check
if: needs.check.outputs.should_build == 'true'
uses: ./.github/workflows/windows.yml

linux:
needs: check
if: needs.check.outputs.should_build == 'true'
uses: ./.github/workflows/linux.yml

release:
needs: [windows, linux]
if: needs.windows.result == 'success' && needs.linux.result == 'success'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout HEAD only
uses: actions/checkout@v3
with:
fetch-depth: 1

- name: Download windows-bundle.zip
uses: actions/download-artifact@v4
with:
name: windows-bundle.zip

- name: Download windows-ppcx64.zip
uses: actions/download-artifact@v4
with:
name: windows-ppcx64.zip

- name: Download windows-ppcross386.zip
uses: actions/download-artifact@v4
with:
name: windows-ppcross386.zip

- name: Download linux-bundle.zip
uses: actions/download-artifact@v4
with:
name: linux-bundle.zip

- name: Download linux-ppcx64.zip
uses: actions/download-artifact@v4
with:
name: linux-ppcx64.zip

- name: Download linux-ppcross386.zip
uses: actions/download-artifact@v4
with:
name: linux-ppcross386.zip

- name: Prepare release notes
run: |
ts=$(TZ=Europe/Berlin date +"%Y-%m-%d %H:%M:%S CEST")
{
echo "FPC Unleashed nightly build"
echo
echo "Generated from commit: $GITHUB_SHA"
echo "Build time: $ts"
} > release-body.txt

- name: Publish nightly release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release delete nightly --yes --cleanup-tag --repo "$GITHUB_REPOSITORY" 2>/dev/null || true
gh release create nightly \
--repo "$GITHUB_REPOSITORY" \
--target "$GITHUB_SHA" \
--title "FPC Unleashed nightly" \
--notes-file release-body.txt \
--prerelease \
windows-bundle.zip \
windows-ppcx64.zip \
windows-ppcross386.zip \
linux-bundle.zip \
linux-ppcx64.zip \
linux-ppcross386.zip
63 changes: 63 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Linux

on:
workflow_dispatch:
workflow_call:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Install bootstrap compiler
run: |
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
sudo apt-get update -o Acquire::Retries=3
sudo apt-get install -y --no-install-recommends fpc-3.2.2

- name: Checkout source
uses: actions/checkout@v3

- name: Build FPC x86_64 (native)
run: |
make distclean
make all CPU_TARGET=x86_64

- name: Install FPC x86_64
run: make install CPU_TARGET=x86_64 INSTALL_PREFIX=$PWD/fpc

- name: Build i386 cross-compiler
run: make crossinstall OS_TARGET=linux CPU_TARGET=i386 INSTALL_PREFIX=$PWD/fpc PP=$PWD/compiler/ppcx64

- name: Package artifacts
run: |
mv compiler/ppcx64 fpc/bin
mv compiler/ppcross386 fpc/bin
mv fpc/lib/fpc/3.3.1/units fpc/units
rm -rf fpc/lib
rm -rf fpc/share
zip -rq linux-bundle.zip fpc
zip -j linux-ppcx64.zip fpc/bin/ppcx64
zip -j linux-ppcross386.zip fpc/bin/ppcross386

- name: Upload linux-bundle.zip
uses: actions/upload-artifact@v4
with:
name: linux-bundle.zip
path: linux-bundle.zip
retention-days: 7

- name: Upload linux-ppcx64.zip
uses: actions/upload-artifact@v4
with:
name: linux-ppcx64.zip
path: linux-ppcx64.zip
retention-days: 7

- name: Upload linux-ppcross386.zip
uses: actions/upload-artifact@v4
with:
name: linux-ppcross386.zip
path: linux-ppcross386.zip
retention-days: 7
92 changes: 92 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Windows

on:
workflow_dispatch:
workflow_call:

jobs:
build:
runs-on: windows-latest

steps:
- name: Download bootstrap FPC 3.2.2
run: |
curl -L -o fpc.exe https://downloads.freepascal.org/fpc/dist/3.2.2/i386-win32/fpc-3.2.2.i386-win32.exe
shell: cmd

- name: Verify bootstrap FPC hash
run: |
$expected = "7EC78B1790ECAC7685F440B17F9E03865BC09846B7C068A9270C4D37704B5AC8"
$actual = Get-FileHash -Algorithm SHA256 -Path "fpc.exe" | Select-Object -ExpandProperty Hash
Write-Host "Expected: $expected"
Write-Host "Actual: $actual"
if ($actual -ne $expected) {
Write-Error "SHA256 mismatch! Aborting."
exit 1
}
shell: powershell

- name: Install bootstrap FPC compiler
run: fpc.exe /VERYSILENT /DIR="C:\fpc322"
shell: cmd

- name: Checkout repository
uses: actions/checkout@v3

- name: Update PATH env
run: echo "C:\fpc322\bin\i386-win32" >> $env:GITHUB_PATH
shell: powershell

- name: Build FPC x86_64 (native)
run: |
make distclean
make all OS_TARGET=win64 CPU_TARGET=x86_64 PP=C:\fpc322\bin\i386-win32\ppc386.exe
shell: cmd

- name: Build FPC x86_64 (utils)
run: make utils OS_TARGET=win64 CPU_TARGET=x86_64 PP=%GITHUB_WORKSPACE%\compiler\ppcx64.exe
shell: cmd

- name: Install FPC x86_64
run: make install OS_TARGET=win64 CPU_TARGET=x86_64 INSTALL_PREFIX=C:\fpc PP=compiler\ppcx64.exe
shell: cmd

- name: Build i386 cross-compiler
run: |
make crossinstall OS_TARGET=win32 CPU_TARGET=i386 INSTALL_PREFIX=C:\fpc PP=C:\fpc\bin\x86_64-win64\ppcx64.exe OPT="-dFPC_SOFT_FPUX80"
shell: cmd

- name: Cleanup
run: Remove-Item -Path 'C:\fpc\bin\i386-win32' -Recurse -Force
shell: powershell

- name: Package artifacts
run: |
powershell -Command "Remove-Item -Recurse -Force 'C:\fpc\doc','C:\fpc\examples','C:\fpc\fpmkinst','C:\fpc\msg'"
pushd C:\
"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=3 -bd "%GITHUB_WORKSPACE%\windows-bundle.zip" fpc >nul
popd
"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=3 -bd "windows-ppcx64.zip" "C:\fpc\bin\x86_64-win64\ppcx64.exe" >nul
"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=3 -bd "windows-ppcross386.zip" "C:\fpc\bin\x86_64-win64\ppcross386.exe" >nul
shell: cmd

- name: Upload windows-bundle.zip
uses: actions/upload-artifact@v4
with:
name: windows-bundle.zip
path: windows-bundle.zip
retention-days: 7

- name: Upload windows-ppcx64.zip
uses: actions/upload-artifact@v4
with:
name: windows-ppcx64.zip
path: windows-ppcx64.zip
retention-days: 7

- name: Upload windows-ppcross386.zip
uses: actions/upload-artifact@v4
with:
name: windows-ppcross386.zip
path: windows-ppcross386.zip
retention-days: 7
Loading