Releases: fable-compiler/Fable
Releases · fable-compiler/Fable
Release list
5.10.0
🚀 Features
-
(beam) Support
Environment.CurrentDirectoryandGetEnvironmentVariable(#4801) (55b9d560) -
(beam) Support setting
Environment.CurrentDirectory(#4783) (7b2a262f) -
(rust) Various codegen and runtime improvements (#4781) (ae10cd2c)
- Cast
boolto integer types; support**via.powf - Add
Decimal.IsInteger/IsEvenInteger/IsOddInteger/IsCanonical - Fix two-switch decision trees dispatching to the wrong target
- Fix reference-typed match bindings panicking via
mem::zeroed - Fix string and non-ident option pattern matches emitting invalid Rust
matcharms - Fix
Convert.ToXxx(bool) - Fix
Char.ToUpper/ToLowertruncating multi-char case mappings - Fix
Random.nextDoublepanic message - Fix
Map.find/tryFindpanicking on reference-typed values
- Cast
🐞 Bug Fixes
5.9.0
🚀 Features
- (js/ts) Add
System.IO.Directorysupport (Exists, CreateDirectory) (#4798) (6568f35e) - (js/ts/python/beam) Preserve member calls and pattern matches in quotations (#4780) (55482e6b)
🐞 Bug Fixes
5.8.1
🐞 Bug Fixes
- (beam) Make F# reflection work on the Beam target (#4766) (b15b280d)
- (beam) Give sized integers .NET fixed-width semantics (#4769) (2ed39630)
- (beam) Qualify Erlang module names by their OTP app (#4770) (5516c8d8)
- (beam) Entry point argv and exit code, bigint from float, option reflection (#4772) (ea915541)
5.8.0
🚀 Features
🐞 Bug Fixes
- (beam) Order discriminated union comparison by declaration order (#4761) (3597a582)
- (beam) Preserve function-value identity for PhysicalEquality (#4762) (727673f3)
- (js/ts) Don't drop unsupported
jsOptionsstatements when inlining as POJO (#4754) (4cbc44fc) - (js/ts) Async cancellation propagation and continuation double-resolve (#4746) (c78a9a8e)
- (js/ts) Date arithmetic: PM parsing, AddMonths day clamp, AddYears offset (#4744) (be0558eb)
- (js/ts) Int64 non-decimal parsing and BitConverter .NET mismatches (#4748) (2704d9c5)
- (python) Propagate [] return value as process exit code (#4763) (a8d9bf5f)
⚡ Performance Improvements
5.7.0
🚀 Features
🐞 Bug Fixes
- MailboxProcessor dropping falsy messages and unit replies (8299b2e7)
- (all) Include original exception message when loading a Fable plugin fails (#4739) (659e73a4)
- (all) Add
Seq.enumerateTryWithfor try/with in seq, list, array comprehensions (#4750) (448c90d7) - (beam) EndsWith regression for empty pattern with non-ordinal comparison (eee2ad3f)
- (js/ts) Represent union cases with no fields as singletons (3f6e618e)
- (js/ts) Match .NET NaN semantics in JS comparison, min and max (7e5106f9)
- (js/ts) BigInteger byte-array corruption, checked conversions, gcd, log2 (#4743) (f3cb7f2b)
- (js/ts) Observable/Event dropping null/undefined/unit values (#4742) (75bff73b)
- (js/ts) EndsWith regression for empty pattern with non-ordinal comparison (7793ed7b)
- (js/ts/python) Quote strings with the %A format specifier (#4749) (75321f3b)
- (python) Accept native floats in fable-library float functions (#4724) (ea4a9853)
- (python) Represent union cases with no fields as singletons (0211b4cc)
- (python) Emit forward reference for self-referencing static union members (#4752) (452b85f2)
- (python) Match .NET NaN and signed-zero semantics in comparison, min and max (383bb93c)
- (python)
LastIndexOf(value, startIndex)off-by-one on inclusive boundary (bad6bcac) - (python) MailboxProcessor dropping unit replies (8e83ebe3)
- (ts/js)
Regex.Replacecount/substitutions andRegex.Splitsemantics (#4741) (d6ae6bd3)
⚡ Performance Improvements
5.6.0
🚀 Features
- (all) Allow
[<Emit>]on StringEnum cases (#4711) (0b1f61ee) - (js/ts) Optimize
printfnwith constant string toconsole.log(#4718) (2d6d083a) - (js/ts) Add
Path.Combinesupport (b1b1e273) - (js/ts) Add
System.IO.PathandSystem.IO.FileAPI support (ec99fac5) - (js/ts/python) Warn on duplicate attached member names (#4715) (fd06aa64)
- (js/ts/python) Add Environment and Console.Error support (6e082f95)
- (py) Add
Path.Combinesupport (4c901c65) - (python) Add
Directory.Exists,Directory.CreateDirectory(f4b4eabc) - (ts)
[<Pojo>]interfaces extend parent[<Pojo>]type (#4717) (4f4243cd)
🐞 Bug Fixes
- Generate an error on erased union case typed as obj (#4710) (bf2134d5)
- (all) Include return type in overload suffix for op_Implicit/op_Explicit (#4712) (a6846010)
- (js/ts) DateTime.ToString() and %A are now consistent across all DateTimeKind values (#4714) (de98b0e4)
- (python) Accept allowAccessToPrivateRepresentation in FSharpType.IsUnion/IsRecord/GetUnionCases (#4722) (7f915f1d)
- (ts) Strip byref annotation from compiler-generated copy-update locals (#4716) (1e072ed2)
⚡ Performance Improvements
5.5.0
🚀 Features
- (all) Add
Compiler.is*target detection flags for conditional branching (#4692) (621dea31) - (js/ts) Map task { } to Promise (97f54d36)
- (js/ts/python/beam) Add support for
Async.AwaitEvent(#4693) (71c98179)
🐞 Bug Fixes
- (all) Pass raw value for optional arguments of native bindings (#4688) (a4c75483)
- (all) Support .NET format specifiers and alignment in interpolated strings (#4695) (7c50a3af)
- (all) Error on inline function referencing private value (#4701) (cea6806e)
- (beam) Support module-level mutable variables via process dictionary (#4676) (535b9af0)
- (beam) Namespace module-level mutable state keys by module (#4683) (1ec28ab1)
- (js) Respect StringComparison in String.IndexOf/LastIndexOf (#4681) (7cb92d52)
- (js/ts) Implicit DateTime to DateTimeOffset conversion (#4697) (fcbd9b91)
- (js/ts) Int list is not a union type (#4698) (ecbecbe7)
- (js/ts) Hoist emitJsStatement imports with trailing comments (#4702) (e820eb72)
- (js/ts) Uncurry mutable module value alias calls (#4703) (0de0d218)
- (js/ts) Pass TypeInfo to getRecordFields to handle None fields in anonymous records (#4704) (c977d78b)
- (js/ts/python) Drop allowAccessToPrivateRepresentation arg from reflection calls (#4689) (ec3cded7)
- (python) Fix task while loop stack overflow (fdb0ec37)
- (ts) Use declared type-param names in object expression generic methods (#4685) (1c3e7d99)
- (ts) Use signature type-param names when implementing generic interface methods (#4686) (03e5deee)
- (ts) Bound enum-constrained type parameters with
extends number(#4687) (15daf624) - (ts) Widen isEnumDefined value parameter to accept any value (#4690) (0d6498dd)
- (ts) Keep enclosing type parameters in scope for nested members (#4691) (f5723a2d)
- (ts) Re-declare class type params on generic static attached members (#4696) (2da50780)
- (ts) Filter class type params from attached let-binding methods (#4700) (d3a6a1dd)
5.4.0
🚀 Features
🐞 Bug Fixes
5.3.0
🚀 Features
🐞 Bug Fixes
- Add type specifiers to interpolated strings (#4646) (512ae4d)
- (all) Cli fable clean command crash when output directory doesn't exist (#4651) (de379e8)
- (all) Align
invalidArgerror message with .NET format (#4662) (e672eb7) - (beam) Preserve element type through Option.Value for interface dispatch (#4661) (e5521b6)
- (python) Emit wildcard default for union or-patterns (#4649) (#4653) (c96f0ec)
5.2.0
🚀 Features
🐞 Bug Fixes
- (beam) Collapse array-literal process-dict ref round-trips in FFI/Emit calls (#4626) (234ee08)
- (beam) Make Emit $N substitution a single left-to-right pass (#4631) (48af8db)
- (js/ts) Throw an error when trying to set non-property memeber inside of
jsOptions(#4624) (2d9673f) - (js/ts) Reject JS-permissive date strings that .NET TryParse rejects (#4588) (09003de)
- (js/ts) Make Exception.ToString() return the message instead of "Exception" (#4635) (4c36f76)
- (python) Avoid union case field name collision with Union.name (#4647) (ff5df24)
- (python) Make [] union static members work (#4634) (#4636) (15eb83e)