Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
322 commits
Select commit Hold shift + click to select a range
74adfa6
chore: Bump the all-pip group with 3 updates (#4975)
dependabot[bot] Sep 16, 2026
efee8a0
chore: Bump the all-pip group in /src/fable-library-py with 2 updates…
dependabot[bot] Sep 16, 2026
b770870
chore: Bump the all-actions group with 2 updates (#4974)
dependabot[bot] Sep 16, 2026
9193c17
chore: Bump the all-npm group with 2 updates (#4972)
dependabot[bot] Sep 16, 2026
e0536ec
fix(python): keep the payload type when reading an erased union field…
MangelMaxime Sep 18, 2026
b5a337d
feat(dart): add `Async` runtime and `Future` interop for dart (#4978)
Tseing Sep 20, 2026
c9f818a
chore: Bump the all-nuget group with 6 updates (#4976)
dependabot[bot] Sep 20, 2026
eec16db
chore: Bump @babel/core from 7.29.0 to 7.29.7 in /tests/React (#4977)
dependabot[bot] Sep 20, 2026
50a37f7
fix(rust): Remove reflection registration on boxing (#4983)
ncave Sep 21, 2026
aea61b5
fix(js/ts): Fix Dictionary.Remove and HashSet.Remove to remove empty …
ncave Sep 21, 2026
3207543
chore: Bump the all-pip group with 2 updates (#4988)
dependabot[bot] Sep 23, 2026
92270c6
chore: Bump the all-actions group with 2 updates (#4989)
dependabot[bot] Sep 23, 2026
0a261f6
chore: Bump the all-npm group in /tests/React with 2 updates (#4986)
dependabot[bot] Sep 23, 2026
deaf5b2
chore: Bump the all-npm group with 2 updates (#4987)
dependabot[bot] Sep 23, 2026
d1822b4
chore: Bump the all-nuget group with 3 updates (#4990)
dependabot[bot] Sep 23, 2026
70278ec
fix(beam): preserve local spawn calls (#4992)
dbrattli Sep 23, 2026
b0c6129
fix: retry MSBuild project cracking serially (#4991)
dbrattli Sep 24, 2026
ece7b07
fix(dart): prefix file scope names shadowed by class members (#4982)
MangelMaxime Sep 25, 2026
32d85ad
perf(js/ts): faster `resizeArray.Clear()` in JS/TS
goswinr Sep 24, 2026
2369fbd
fix(js/ts): clear custom System.Collections.IList implementations
MangelMaxime Sep 25, 2026
6ccad2d
chore: release multiple projects (#4971)
github-actions[bot] Sep 25, 2026
ae165dd
fix(rust): Use common null storage (#4995)
ncave Sep 25, 2026
389edef
feat(dart): add support for `System.Text.Rune` (#3860) (#4969)
Tseing Sep 26, 2026
bc367c0
fix(rust): Add support for System.Text.Rune (#4997)
ncave Sep 26, 2026
ec8d4c2
fix(rust): Add missing Decimal members Abs, Sign, CopySign, GetTypeCo…
ncave Sep 27, 2026
58b79e0
fix(beam): honor custom ToString in %O (#4994)
dbrattli Sep 27, 2026
e2120e1
fix(beam): support AggregateException (#4999)
dbrattli Sep 27, 2026
0e9329d
docs(beam): rewrite target reference and roadmap (#5000)
dbrattli Sep 28, 2026
682b235
fix(beam): preserve unmatched filtered exceptions (#5001)
dbrattli Sep 28, 2026
dc96476
fix(beam): support integer Log2 (#5002)
dbrattli Sep 28, 2026
902870b
fix(beam): support DivRem ref arguments (#5003)
dbrattli Sep 28, 2026
4ab553a
test(beam): restore TryParse parity coverage (#5004)
dbrattli Sep 28, 2026
d569630
fix(beam): range-check integer parsing (#5005)
dbrattli Sep 28, 2026
3ebe480
fix(beam): check System.Convert integer conversions (#5006)
dbrattli Sep 28, 2026
dfecebc
fix(beam): support Decimal bit constructors (#5007)
dbrattli Sep 28, 2026
426892e
fix(rust): Add proper UnicodeCategory support (#5009)
ncave Sep 29, 2026
01eeded
fix(beam): share cancellation state across processes (#5010)
dbrattli Sep 29, 2026
358548d
fix(beam): close BigInteger API gaps (#5011)
dbrattli Sep 29, 2026
de8080a
test(beam): restore HashSet interface parity coverage (#5012)
dbrattli Sep 29, 2026
63a6f12
fix(beam): preserve array identity hashing (#5014)
dbrattli Sep 29, 2026
7b3d762
fix(beam): eliminate unsupported expression placeholders (#5013)
dbrattli Sep 29, 2026
78c3b55
chore: Bump markdown-it from 14.3.0 to 14.3.2 (#5015)
dependabot[bot] Sep 29, 2026
67b6324
fix(beam): preserve union collection ordering (#5016)
dbrattli Sep 29, 2026
213c6ce
chore: Bump the all-actions group with 2 updates (#5022)
dependabot[bot] Sep 30, 2026
9f3e56c
chore: Bump the all-nuget group with 2 updates (#5021)
dependabot[bot] Sep 30, 2026
2b08743
chore: Bump the all-pip group with 2 updates (#5020)
dependabot[bot] Sep 30, 2026
946f5c7
chore: Bump hypothesis from 6.168.0 to 6.168.2 in /src/fable-library-…
dependabot[bot] Sep 30, 2026
69c62ff
chore: Bump the all-npm group with 2 updates (#5018)
dependabot[bot] Sep 30, 2026
3509e09
chore: Bump brace-expansion from 5.0.9 to 5.0.12 (#5023)
dependabot[bot] Sep 30, 2026
79bed98
fix(js/python/dart): handle Rune in non-Rust builtin matches (#5024)
dbrattli Sep 30, 2026
9632589
fix(python): import union cases for reflection (#5028)
dbrattli Sep 30, 2026
ff71a8c
fix(python): avoid name collisions in nested tuple matches (#5027)
dbrattli Sep 30, 2026
f3c0e80
chore: release multiple projects (#4996)
github-actions[bot] Oct 2, 2026
9b69e5b
fix(all): Minor type const strings cleanup (#5029)
ncave Oct 2, 2026
e6e9f54
fix(rust): Remove trailing comma from macro args (#5031)
ncave Oct 3, 2026
aaf35f2
chore: revert release multiple projects (#4996) (#5032)
MangelMaxime Oct 3, 2026
1219408
chore: release multiple projects (#5030)
github-actions[bot] Oct 3, 2026
dcfaa3d
fix(beam): recognize boxed discriminated unions in type tests (#5033)
dbrattli Oct 3, 2026
4ee3158
feat(python): give System exceptions native Python bases (#5040)
dbrattli Oct 4, 2026
2da7144
fix(python): share per-object locks and align StartChild timeouts (#5…
dbrattli Oct 4, 2026
b9ce2fd
fix(beam): prevent identifier collisions and atom overflow (#5017)
dbrattli Oct 4, 2026
b32a8bd
chore: Bump ruff from 0.16.9 to 0.16.10 in the all-pip group (#5048)
dependabot[bot] Oct 7, 2026
d5eaee0
chore: Bump pyo3 from 0.29.2 to 0.29.3 in /src/fable-library-py in th…
dependabot[bot] Oct 7, 2026
a7f4fc5
chore: Bump the all-actions group with 2 updates (#5046)
dependabot[bot] Oct 7, 2026
4fad339
chore: Bump hypothesis from 6.168.2 to 6.168.3 in /src/fable-library-…
dependabot[bot] Oct 7, 2026
d7d5a1a
chore: Bump the all-npm group with 2 updates (#5042)
dependabot[bot] Oct 7, 2026
c2b0a57
chore: Bump @fluentui/react from 8.125.7 to 8.125.8 in /tests/React i…
dependabot[bot] Oct 7, 2026
23bc5c5
chore: Bump the all-nuget group with 1 update (#5045)
dependabot[bot] Oct 7, 2026
c2127aa
chore: release multiple projects (#5034)
github-actions[bot] Oct 7, 2026
b6184ce
chore: wait for fable-standalone on npm before building compiler-js
MangelMaxime Oct 7, 2026
b30dc89
fix(beam): disambiguate property accessors from ordinary methods (#5049)
dbrattli Oct 7, 2026
4e486f2
feat(all): add implicit conversion to erased unions U2-U9
shayanhabibi Oct 9, 2026
4eb2177
fix(rust): Fix tailcall elimination for members (#5051)
ncave Oct 9, 2026
17b3658
fix(rust): Fix temporary struct locals type (#5052)
ncave Oct 9, 2026
f13a9e1
fix(beam): normalize exception messages and string split separators (…
dbrattli Oct 10, 2026
07db576
fix(js/ts/python): synchronize cancellation registrations (#5036)
dbrattli Oct 10, 2026
10fdccc
fix(rust): Add main function for no_std (#5054)
ncave Oct 10, 2026
e05bc75
fix(js/ts/python): preserve JS/TS generic unit arguments and Python u…
dbrattli Oct 11, 2026
380e213
fix(rust): No main in tests for xunit v3 (#5055)
ncave Oct 11, 2026
a980248
fix(js/ts/python): settle cancelled delays and finalizers once (#5038)
dbrattli Oct 12, 2026
148f989
chore: upgrade xunit from v2 to v3 (#4623)
dbrattli Oct 12, 2026
ee4dd7c
chore: release multiple projects (#5050)
github-actions[bot] Oct 12, 2026
7eac4ec
ci: test Python 3.13 through 3.15 (#5056)
dbrattli Oct 12, 2026
617f711
fix(beam): preserve async cancellation and finalize resources once (#…
dbrattli Oct 12, 2026
5d15141
fix(all): support implicit conversion to erased unions (#5058)
MangelMaxime Oct 12, 2026
a866187
feat(php): System.Environment (#4782)
Thorium Oct 12, 2026
c126436
chore: release multiple projects (#5059)
github-actions[bot] Oct 12, 2026
a3f27e0
fix(rust): Support inref struct unions (#5060)
ncave Oct 13, 2026
9e78a3b
fix(beam): make lazy sequence wrappers process-portable (#5063)
dbrattli Oct 13, 2026
5218693
fix(python): settle cancelled tasks awaited by async workflows (#5064)
dbrattli Oct 14, 2026
288c69f
chore: Bump the all-pip group in /src/fable-library-py with 2 updates…
dependabot[bot] Oct 14, 2026
54b8309
chore: Bump the all-actions group with 4 updates (#5066)
dependabot[bot] Oct 14, 2026
dbbbab9
chore: Bump the all-nuget group with 17 updates (#5070)
dependabot[bot] Oct 14, 2026
e38e2f6
chore: Bump the all-pip group with 3 updates (#5068)
dependabot[bot] Oct 14, 2026
cbb255c
chore: enforce conventional Dependabot titles (#5071)
dbrattli Oct 14, 2026
2ea792c
chore: Bump the all-npm group across 1 directory with 3 updates (#5065)
dependabot[bot] Oct 14, 2026
e6b72ec
fix(js/ts): avoid full array copy in Encoding.GetString (#5069)
MangelMaxime Oct 14, 2026
5fa673d
chore: Bump the all-nuget group with 1 update (#5072)
dependabot[bot] Oct 14, 2026
9bde2e4
perf(all): enable server GC and immediate JIT tiering (#5073)
MangelMaxime Oct 15, 2026
d42aa6b
perf: crack project references in parallel (#5079)
MangelMaxime Oct 15, 2026
594d17b
perf: update inline expressions incrementally in watch mode (#5080)
MangelMaxime Oct 15, 2026
5dd6b49
fix(js/ts/python): preserve cancelled cleanup and generic unit callba…
dbrattli Oct 15, 2026
87fc89f
fix(all): recompile dependents on signature change in watch (#5084)
MangelMaxime Oct 15, 2026
f19e2c5
fix(python): preserve reusable replies and unit continuations (#5082)
dbrattli Oct 15, 2026
5012959
fix(all): forward `--targetprofile` for precompile (#5085)
MangelMaxime Oct 15, 2026
07989b1
fix(python): emit widening integer casts (#5087)
MangelMaxime Oct 15, 2026
6b99591
feat(standalone)!: return tagged tooltips instead of text (#5088)
MangelMaxime Oct 15, 2026
1643297
feat(js/ts/python/beam): support Async.TryCancelled (#5083)
dbrattli Oct 15, 2026
ec39675
chore(python): normalize runtime exports and enforce Ruff checks (#5090)
dbrattli Oct 15, 2026
37c6980
fix(all): More union type tests (#5091)
ncave Oct 15, 2026
b210461
feat(standalone)!: keep file name in declaration locations (#5089)
MangelMaxime Oct 16, 2026
9eff071
feat(standalone): expose symbol lookup and uses in file (#5101)
MangelMaxime Oct 16, 2026
53849cc
feat(standalone)!: return full completions with lazy docs (#5102)
MangelMaxime Oct 16, 2026
4ec83ff
feat(standalone)!: report error codes and severities (#5103)
MangelMaxime Oct 16, 2026
e65d42c
feat(standalone): expose lexer tokens and classification (#5110)
MangelMaxime Oct 16, 2026
ec72286
refactor(standalone)!: drop GetErrors, use Errors on results (#5111)
MangelMaxime Oct 16, 2026
e33c578
feat(standalone)!: take 0-based columns in positional APIs (#5112)
MangelMaxime Oct 16, 2026
ada9d47
chore: release multiple projects (#5061)
github-actions[bot] Oct 16, 2026
021ab65
fix(standalone): warn and skip plugins instead of throwing (#5114)
MangelMaxime Oct 20, 2026
5ee8bbb
feat(js/ts): add CaseTest attribute for TypeScriptTaggedUnion cases t…
shayanhabibi Oct 21, 2026
3e84fd5
chore: release multiple projects (#5115)
github-actions[bot] Oct 21, 2026
fca4c40
fix(js/ts): round decimals below 0.1 correctly
sasmithjr Oct 20, 2026
3076b45
fix(js/ts): keep decimal zero scale without leading zeros
MangelMaxime Oct 21, 2026
32a69e0
fix(js/ts): hash decimals by value in collections
MangelMaxime Oct 21, 2026
b9d4684
chore: Bump the all-pip group with 3 updates (#5121)
dependabot[bot] Oct 21, 2026
51ff4c4
chore: Bump markdown-it from 14.3.2 to 14.3.3 (#5124)
dependabot[bot] Oct 21, 2026
c49ce39
chore: Bump rollup from 4.64.5 to 4.64.9 in the all-npm group (#5118)
dependabot[bot] Oct 21, 2026
bdf0a6c
fix(js/ts): keep .NET decimal scale through arithmetic (#5126)
MangelMaxime Oct 21, 2026
798df10
fix(js/ts): warn on type test against Pojo class (#5128)
MangelMaxime Oct 21, 2026
c9feb33
fix(js/ts): accept decimal integers up to 2^96
MangelMaxime Oct 21, 2026
6430cda
fix(js/ts): align decimal conversion, parsing and G format
MangelMaxime Oct 21, 2026
cd63e57
feat(js/ts): map static Decimal conversion methods (#5129)
MangelMaxime Oct 21, 2026
eb68225
feat(js/ts): support System.Diagnostics.Stopwatch (#5100)
simontreanor Oct 21, 2026
d063630
fix(js/ts): add missing Async and Task members, cancel timed-out Star…
simontreanor Oct 21, 2026
5de3271
fix(js/ts): respect maxDegreeOfParallelism and cancel on failure in A…
simontreanor Oct 21, 2026
122ed9c
docs(js/ts): document ??= and the directive prologue helpers (#4166)
shayanhabibi Oct 21, 2026
5586819
chore: Bump the all-nuget group with 4 updates (#5123)
dependabot[bot] Oct 21, 2026
5c7561b
chore: Bump @testing-library/user-event from 14.6.7 to 14.6.8 in /tes…
dependabot[bot] Oct 21, 2026
ba04278
perf(all): faster project cracking (#5136)
MangelMaxime Oct 22, 2026
e9ffc41
perf(all): disable .NET telemetry for dotnet build (#5137)
MangelMaxime Oct 22, 2026
7a4e539
docs(all): mention DOTNET_TieredPGO in help text (#5139)
MangelMaxime Oct 22, 2026
7cd1fd8
chore: Bump pyo3 from 0.29.3 to 0.30.1 in /src/fable-library-py in th…
dependabot[bot] Oct 22, 2026
f4a1a8c
feat(all): support suppressing warnings via `// fable-disable` commen…
MangelMaxime Oct 22, 2026
09158b0
fix(all): kill --run process on SIGTERM everywhere (#5140)
MangelMaxime Oct 22, 2026
28427d6
feat(js/ts): add `JSX.spread` for `JSX.create` props (#5141)
MangelMaxime Oct 22, 2026
5c44e51
fix(all): render warning code without repeating the tag (#5142)
MangelMaxime Oct 22, 2026
3b8a9e2
feat(js/ts): derive case tests for TypeScriptTaggedUnion cases sharin…
MangelMaxime Oct 22, 2026
8cc2107
feat(js/ts): support CaseTest on Erase union cases (#5131)
MangelMaxime Oct 22, 2026
3a29530
feat(js/ts): derive erased union tests from interfaces (#5133)
MangelMaxime Oct 22, 2026
b775276
fix(all): serialize output directory deduplication (#5143)
MangelMaxime Oct 22, 2026
09d0661
fix(all): report compiler agent failures instead of hanging (#5144)
MangelMaxime Oct 22, 2026
0529fcf
fix(all): refresh unchanged outputs so up-to-date skip works (#5145)
MangelMaxime Oct 22, 2026
2be6661
fix(js/ts): inline interface cases of TypeScriptTaggedUnion (#5146)
MangelMaxime Oct 22, 2026
2098f64
feat(all): warn on duplicate CompiledName on union cases
MangelMaxime Oct 22, 2026
be20361
chore: release multiple projects (#5125)
github-actions[bot] Oct 22, 2026
459166d
fix(all): warn on duplicate names in erased unions (#5169)
MangelMaxime Oct 26, 2026
4449510
perf(js/ts): standard library combine numeric hash from snapshot of o…
shayanhabibi Oct 26, 2026
60f2f5b
fix(js/ts/python/dart/beam): raise typed exceptions from invalidArg a…
leonitousconforti Oct 23, 2026
0b8f77f
fix(beam): raise ArgumentNullException from nullArg
MangelMaxime Oct 26, 2026
9e5d34f
fix(beam): keep parameter name in ArgumentException
MangelMaxime Oct 26, 2026
0ceb5e9
perf(js/ts): standard library remove .map result array from record ha…
shayanhabibi Oct 26, 2026
7d7ceb3
fix(js/ts/python/dart/beam): align collection exception types with FS…
leonitousconforti Oct 26, 2026
04ddbd2
fix(js/ts): format DateTimeOffset in its own offset (#5171)
MangelMaxime Oct 26, 2026
401c881
fix(python/beam/rust): implicit DateTime to DateTimeOffset (#5173)
MangelMaxime Oct 26, 2026
9c35162
fix(js/ts/python): compare ReferenceEquality types by ref (#5174)
MangelMaxime Oct 26, 2026
e13e7b0
fix(js/ts): support %o in sprintf and interpolated strings (#5175)
MangelMaxime Oct 26, 2026
04ba385
fix(js/ts): keep column 0 mappings in source maps (#5176)
MangelMaxime Oct 26, 2026
5a1ab2e
test(js/ts): cover N0, C0 and P0 format specifiers (#5177)
MangelMaxime Oct 26, 2026
b383673
fix(all): recompile inline users of a file with a signature (#5179)
MangelMaxime Oct 27, 2026
a61ec8a
fix(all): accept RegexOptions.NonBacktracking (#5178)
MangelMaxime Oct 27, 2026
d332e7d
feat(js/ts/python/dart/beam): support System.Array.BinarySearch and R…
leonitousconforti Oct 27, 2026
467db70
ci: skip ShipIt jobs on forks (#5147)
MangelMaxime Oct 27, 2026
a8cbc5d
feat(all): error on unsupported RegexOptions at compile time (#5180)
MangelMaxime Oct 27, 2026
2ed9d6d
perf(js/ts): standard library one pass List.append builder (#5148)
shayanhabibi Oct 27, 2026
65cd419
perf(js/ts): cast erased option unwraps in TypeScript output (#5181)
MangelMaxime Oct 27, 2026
bb0faa7
fix(js/ts/dart): float to small integer and char conversions (#5182)
MangelMaxime Oct 27, 2026
6efa86d
feat(js/ts/python/dart): support Nullable conversions (#5183)
MangelMaxime Oct 27, 2026
187f898
perf(js/ts): list node as a class with a shared empty node (#5185)
MangelMaxime Oct 27, 2026
71a0ad9
perf(js/ts): compile isNull to a plain null check (#5186)
MangelMaxime Oct 27, 2026
435fc0b
perf(js/ts): check array bounds only on undefined reads (#5188)
MangelMaxime Oct 27, 2026
91bca92
perf(js/ts): closure-free ref cells and out-arg value cells (#5189)
MangelMaxime Oct 27, 2026
bfb4a2a
perf(js/ts): keep the curried original on its adapter (#5191)
MangelMaxime Oct 27, 2026
d88621c
perf(js/ts): walk arrays by index when enumerated as seq (#5192)
MangelMaxime Oct 27, 2026
e6a742b
perf(js/ts): throw invalidArg and invalidOp at the call site (#5194)
MangelMaxime Oct 28, 2026
2b66a5d
perf(js/ts): hash unions without allocating (#5195)
MangelMaxime Oct 28, 2026
d96b6ab
fix(js/ts): zero-fill Array.zeroCreate for numeric types without a ty…
goswinr Oct 28, 2026
9517eaf
perf(js/ts): probe dictionary buckets without allocating (#5196)
MangelMaxime Oct 28, 2026
d5f1f8f
fix(js/ts): throw on out-of-range string indexer (#5214)
goswinr Oct 28, 2026
5185e65
fix(js/ts/python/dart/beam): add FSharp.Core's argument checks to col…
leonitousconforti Oct 28, 2026
2397032
test(js): run the .NET tests with the invariant culture (#5210)
goswinr Oct 28, 2026
217ce4a
test(js/ts): cover behaviors changed by the perf PRs (#5216)
MangelMaxime Oct 28, 2026
82e606e
fix(js/ts): parse numbers like .NET and raise its exception types (#5…
leonitousconforti Oct 28, 2026
cb7d6d6
perf(js/ts): pass array literals to typed array constructors as plain…
goswinr Oct 28, 2026
82b935f
fix(js/ts): honor NumberStyles when parsing floats (#5217)
MangelMaxime Oct 28, 2026
e35d06c
fix(ts): annotate Fable.Core typed arrays with native TS types
goswinr Oct 28, 2026
f790bf5
fix(ts): give Uint8ClampedArray its own Fable.Core type
MangelMaxime Oct 28, 2026
ce88696
fix(all): keep F# diagnostics for scripts on Windows (#5218)
MangelMaxime Oct 29, 2026
17b531a
chore: release multiple projects (#5170)
github-actions[bot] Oct 29, 2026
8ed7778
feat(js/ts/python/dart/beam): support ArgumentException.ParamName (#5…
leonitousconforti Oct 29, 2026
5521d38
chore: Bump the all-nuget group with 7 updates (#5207)
dependabot[bot] Oct 29, 2026
4508887
chore: Bump the all-actions group across 1 directory with 3 updates (…
dependabot[bot] Oct 29, 2026
225bc73
chore: Bump the all-pip group with 2 updates (#5206)
dependabot[bot] Oct 29, 2026
24d9c41
feat(js/ts): support the "R" numeric format and choose "G" notation l…
leonitousconforti Oct 29, 2026
a555119
chore: add citation metadata for Zenodo (#5220)
MangelMaxime Oct 29, 2026
cac5ddd
chore: Bump the all-npm group with 2 updates (#5205)
dependabot[bot] Oct 29, 2026
865d3c3
chore: release multiple projects (#5221)
github-actions[bot] Oct 29, 2026
7b176e7
fix(js/ts): round float32 results like .NET (#5222)
MangelMaxime Oct 30, 2026
508026e
fix(js/ts/python): call base ctor from explicit constructors (#5226)
MangelMaxime Oct 30, 2026
e38a302
test(ts/dart): cover generated generic name clash (#5228)
MangelMaxime Oct 30, 2026
a782afc
fix(all): recompile when a source file is added or its output is miss…
dbrattli Oct 30, 2026
3a3acf4
feat(js/ts/python/dart/rust/beam): support Convert.ToHexString, ToHex…
leonitousconforti Oct 30, 2026
dd860cc
fix(js/ts/python/dart/rust/beam): use FSharp.Core's algorithms for ra…
leonitousconforti Oct 30, 2026
24e01fd
fix(js/ts): unescape doubled braces in String.Format (#5231)
MangelMaxime Oct 30, 2026
a7dcab8
fix(js/ts): treat null as empty in String.Join and Concat (#5230)
MangelMaxime Oct 30, 2026
7319a99
fix(js/ts/python): clamp negative slice bounds like .NET (#5232)
MangelMaxime Oct 30, 2026
705b6b7
fix(rust): Inline hashing, more Decimal tests (#5236)
ncave Nov 1, 2026
5a7ea99
fix(js/ts): support MidpointRounding in Math.Round (#5233)
MangelMaxime Nov 1, 2026
86c0000
fix(ts): declare Mangle(false) interface members unmangled (#5234)
MangelMaxime Nov 1, 2026
6c22c16
fix(js/ts): print null strings as empty
MangelMaxime Nov 1, 2026
d82ef89
fix(ts): extend library classes for BCL collection bases (#5240)
MangelMaxime Nov 1, 2026
b2f075b
ci: restrict privileged workflows to trusted triggers
MangelMaxime Nov 1, 2026
1190dfa
fix(all): keep reads of imported mutable values in place (#5242)
MangelMaxime Nov 2, 2026
60771e0
fix(all): give imported .fsx files their output extension (#5241)
MangelMaxime Nov 2, 2026
1d77d62
fix(js/ts): match Dictionary/HashSet array keys by reference (#5239)
MangelMaxime Nov 2, 2026
350a390
fix(js/ts): round exact midpoints to even in numeric formats (#5245)
MangelMaxime Nov 3, 2026
8014fb2
fix(js/ts): round Math.Round ties on the exact value (#5254)
MangelMaxime Nov 3, 2026
1e41dcc
fix(all): rename idents of a witness inlined twice (#5249)
MangelMaxime Nov 3, 2026
1072231
fix(js/ts): escape */ in JSDoc comments (#5255)
MangelMaxime Nov 3, 2026
c958156
fix(js/ts): write floats like .NET's ToString (#5246)
MangelMaxime Nov 3, 2026
03712db
fix(js/ts): keep format of interpolated StringFormat (#5248)
MangelMaxime Nov 3, 2026
ce7fc71
fix(js/ts): write negated integer zero without a sign (#5256)
MangelMaxime Nov 3, 2026
7d46c71
fix(js/ts): evaluate reflection parents lazily (#5243)
MangelMaxime Nov 3, 2026
ad01c59
chore: release multiple projects (#5225)
github-actions[bot] Nov 4, 2026
3c1cea9
fix(js/ts): keep TimeSpan.Ticks exact for big values (#5250)
MangelMaxime Nov 4, 2026
dd668b2
perf(js/ts): read arrays at the call site (#5264)
MangelMaxime Nov 4, 2026
07a38e7
perf(js/ts): read string chars at the call site
MangelMaxime Nov 5, 2026
66ace46
fix(js/ts): evaluate the Array.create count once
MangelMaxime Nov 5, 2026
3925e5c
test(js/ts): check the array fast path evaluates once
MangelMaxime Nov 5, 2026
3476354
chore: Bump @fluentui/react from 8.125.8 to 8.125.10 in /tests/React …
dependabot[bot] Nov 5, 2026
400f443
chore: Bump the all-npm group with 2 updates (#5259)
dependabot[bot] Nov 5, 2026
38973e4
chore: Bump the all-nuget group with 2 updates (#5260)
dependabot[bot] Nov 5, 2026
a2e5551
chore: Bump the all-actions group with 2 updates (#5262)
dependabot[bot] Nov 5, 2026
af0db79
chore: Bump the all-pip group in /src/fable-library-py with 4 updates…
dependabot[bot] Nov 5, 2026
cc94c9c
fix(all): pass defaults for DefaultValue fields to ctors (#5267)
MangelMaxime Nov 5, 2026
7e12c10
chore: Bump the all-pip group with 5 updates (#5263)
dependabot[bot] Nov 5, 2026
f8bfce3
fix(js/ts/python): support explicit constructors with as and then (#5…
MangelMaxime Nov 7, 2026
62378c8
fix(js/ts): evaluate for loop bound once (#5282)
MangelMaxime Nov 7, 2026
8c1bf94
fix(dart): Run Expecto tests (#5288)
ncave Nov 7, 2026
f51333f
fix(rust): Wrap async test bodies with runSynchronously (#5289)
ncave Nov 8, 2026
f9657ad
fix(all): copy mutable struct records by value (#5270)
MangelMaxime Nov 11, 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
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"fantomas": {
"version": "7.0.5",
"version": "8.1.1",
"commands": [
"fantomas"
],
Expand All @@ -17,14 +17,14 @@
"rollForward": false
},
"fsharp-analyzers": {
"version": "0.37.2",
"version": "0.41.0",
"commands": [
"fsharp-analyzers"
],
"rollForward": false
},
"easybuild.shipit": {
"version": "3.0.1",
"version": "3.3.0",
"commands": [
"shipit"
],
Expand Down
18 changes: 18 additions & 0 deletions .github/actions/setup-dotnet/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Setup .NET
description: Install the .NET SDK pinned by global.json with a cached NuGet package directory.

runs:
using: composite
steps:
- uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
cache: true
# Package versions also come from .props, which .fsproj files interpolate.
# restore writes *.nuget.g.props into obj/.
cache-dependency-path: |
**/*.fsproj
**/*.props
**/*.targets
.config/dotnet-tools.json
!**/obj/**
14 changes: 14 additions & 0 deletions .github/actions/setup-node/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Setup Node.js
description: Install the Node.js version pinned by package.json with a cached npm download directory.

runs:
using: composite
steps:
- uses: actions/setup-node@v7
with:
node-version-file: package.json
cache: npm
# build.sh also installs in src/fable-compiler-js, src/fable-standalone and tests/React.
cache-dependency-path: |
**/package-lock.json
!**/node_modules/**
16 changes: 16 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -18,6 +20,8 @@ updates:

- package-ecosystem: "nuget"
directory: "/"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -34,6 +38,8 @@ updates:

- package-ecosystem: "github-actions"
directory: "/"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
Expand All @@ -46,6 +52,8 @@ updates:

- package-ecosystem: "uv"
directory: "/"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -58,6 +66,8 @@ updates:

- package-ecosystem: "uv"
directory: "/src/fable-library-py"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -70,6 +80,8 @@ updates:

- package-ecosystem: "npm"
directory: "/tests/React"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -94,6 +106,8 @@ updates:

- package-ecosystem: "cargo"
directory: "/src/fable-library-rust"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand All @@ -106,6 +120,8 @@ updates:

- package-ecosystem: "cargo"
directory: "/src/fable-library-py"
commit-message:
prefix: "chore"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
Expand Down
92 changes: 40 additions & 52 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,30 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Restore tools
run: dotnet tool restore

- name: Check F# code
run: dotnet fantomas . --check --verbosity d

- name: Set up Python 3.13
uses: actions/setup-python@v7
with:
python-version: "3.13"

- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Check Python imports and exports
run: uv run --frozen ruff check --select I,RUF022,RUF068 src/fable-library-py

- name: Check Python formatting
run: uv run --frozen ruff format --check src/fable-library-py

# Verify that Fable.sln can be restored
# See: https://github.com/fable-compiler/Fable/issues/3687
restore-project:
Expand All @@ -46,9 +60,7 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Restore project
run: dotnet restore Fable.sln
Expand All @@ -68,14 +80,10 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Node.js environment
uses: actions/setup-node@v7
with:
node-version-file: package.json
uses: ./.github/actions/setup-node

- name: Fable Tests - JavaScript (linux)
if: matrix.platform == 'ubuntu-latest'
Expand All @@ -94,14 +102,10 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Node.js environment
uses: actions/setup-node@v7
with:
node-version-file: package.json
uses: ./.github/actions/setup-node

- name: Fable Tests - TypeScript
run: ./build.sh test typescript
Expand All @@ -118,14 +122,10 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Node.js environment
uses: actions/setup-node@v7
with:
node-version-file: package.json
uses: ./.github/actions/setup-node

- name: Fable Tests
run: ./build.sh test integration
Expand All @@ -139,14 +139,10 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Node.js environment
uses: actions/setup-node@v7
with:
node-version-file: package.json
uses: ./.github/actions/setup-node

- name: Fable Tests
run: ./build.sh test standalone
Expand All @@ -157,7 +153,7 @@ jobs:
strategy:
matrix:
platform: [ubuntu-latest, windows-latest]
python-version: [3.12, 3.13, 3.14]
python-version: ["3.13", "3.14", "3.15"]
runs-on: ${{ matrix.platform }}
env:
UV_LINK_MODE: copy
Expand All @@ -166,9 +162,7 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
Expand Down Expand Up @@ -219,7 +213,7 @@ jobs:
fail-fast: false
matrix:
platform: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.12", "3.13", "3.14"]
python-version: ["3.13", "3.14", "3.15"]
runs-on: ${{ matrix.platform }}
env:
UV_LINK_MODE: copy
Expand Down Expand Up @@ -272,20 +266,16 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
test: ["default", "no_std", "threaded"]
features: [",", "lrc_ptr", "no_std", "reflection", "threaded"]

steps:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Node.js environment
uses: actions/setup-node@v7
with:
node-version-file: package.json
uses: ./.github/actions/setup-node

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand All @@ -296,20 +286,22 @@ jobs:
run: ./build.sh fable-library --rust

- name: Fable Tests - Rust
run: ./build.sh test rust --${{ matrix.test }}
run: ./build.sh test rust --features "${{ matrix.features }}"

# Separate build job for Dart
build-dart:
runs-on: ubuntu-latest
timeout-minutes: 45
# Without id-token, setup-dart skips the pub.dev token, so packages are
# fetched anonymously.
permissions:
contents: read

steps:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Dart SDK
uses: dart-lang/setup-dart@v1
Expand All @@ -326,9 +318,7 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Setup Erlang/OTP
uses: erlef/setup-beam@v1
Expand Down Expand Up @@ -358,9 +348,7 @@ jobs:
- uses: actions/checkout@v7.0.1

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json
uses: ./.github/actions/setup-dotnet

- name: Restore tools
run: dotnet tool restore
Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,17 @@ jobs:
name: Claude
runs-on: ubuntu-latest

# Only trigger on @claude mentions from trusted contributors
# (NONE = first-time contributors with no prior contributions)
# Only trigger on @claude mentions from maintainers; a review carries its author on `review`, not `comment`
if: |
(
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude'))
) &&
github.event.comment.author_association != 'NONE'
(github.event_name == 'issue_comment'
&& contains(github.event.comment.body, '@claude')
&& contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)) ||
(github.event_name == 'pull_request_review_comment'
&& contains(github.event.comment.body, '@claude')
&& contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)) ||
(github.event_name == 'pull_request_review'
&& contains(github.event.review.body, '@claude')
&& contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.review.author_association))

steps:
- name: Checkout repository
Expand Down
Loading