Skip to content

Releases: fable-compiler/Fable

5.10.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 20:12
42dd606

🚀 Features

  • (beam) Support Environment.CurrentDirectory and GetEnvironmentVariable (#4801) (55b9d560)

  • (beam) Support setting Environment.CurrentDirectory (#4783) (7b2a262f)

  • (rust) Various codegen and runtime improvements (#4781) (ae10cd2c)

    • Cast bool to 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
      match arms
    • Fix Convert.ToXxx(bool)
    • Fix Char.ToUpper/ToLower truncating multi-char case mappings
    • Fix Random.nextDouble panic message
    • Fix Map.find/tryFind panicking on reference-typed values

🐞 Bug Fixes

  • (all) Skip translating unreachable branch of constant-condition if/then/else (#4799) (53c06de1)
  • (python) Make the assert_not_equal failure message describe the failure (#4778) (721fb437)

View changes on Github

5.9.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 18:46
60e30a0

🚀 Features

  • (js/ts) Add System.IO.Directory support (Exists, CreateDirectory) (#4798) (6568f35e)
  • (js/ts/python/beam) Preserve member calls and pattern matches in quotations (#4780) (55482e6b)

🐞 Bug Fixes

  • (beam) Make Assert.AreEqual/NotEqual raise, and stop emitting reflection calls for erased types (#4775) (d9711d4c)

View changes on Github

5.8.1

Choose a tag to compare

@github-actions github-actions released this 14 Jul 07:07
f32cfb1

🐞 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)

View changes on Github

5.8.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 19:28
008d301

🚀 Features

  • (beam) Implement Async.StartChild in fable_async runtime (#4760) (eb2ad9a4)

🐞 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 jsOptions statements 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

  • (python) Avoid conversion-dunder hop in numeric fast paths (#4756) (838eda53)
  • (python) Speed up array aggregates and generic storage in fable-library-core (#4755) (e40a7dc4)

View changes on Github

5.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 21:49
c9b50ee

🚀 Features

  • Add --noGitignore flag to skip generating fable_modules/.gitignore (#4730) (3742b950)

🐞 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.enumerateTryWith for 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.Replace count/substitutions and Regex.Split semantics (#4741) (d6ae6bd3)

⚡ Performance Improvements

  • (python) Use native operators for int64/uint64 arithmetic (#4727) (f062d668)
  • (python) Rewrite hot Seq combinators as native Python generators (#4728) (73e0eab9)
  • (python) Read union case fields directly instead of rebuilding Array (#4725) (e4eaa80b)

View changes on Github

5.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 12:33
e504757

🚀 Features

  • (all) Allow [<Emit>] on StringEnum cases (#4711) (0b1f61ee)
  • (js/ts) Optimize printfn with constant string to console.log (#4718) (2d6d083a)
  • (js/ts) Add Path.Combine support (b1b1e273)
  • (js/ts) Add System.IO.Path and System.IO.File API 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.Combine support (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

  • Split Fable.Transforms into per-target projects for faster incremental builds (#4720) (260c962f)

View changes on Github

5.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 22:00

🚀 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)

View changes on Github

5.4.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 14:46
a49ccd8

🚀 Features

  • (all) Support Exception.InnerException across all targets (#4677) (c9b3ee24)

🐞 Bug Fixes

  • (beam) Make immutable class instances process-portable (#4670) (182eebef)

View changes on Github

5.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 12:52
5d53a15

🚀 Features

  • (beam) Add !^ erased-cast operator to BeamInterop (#4659) (206776b)

🐞 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 invalidArg error 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)

View changes on Github

5.2.0

Choose a tag to compare

@MangelMaxime MangelMaxime released this 11 Jun 18:20

🚀 Features

  • (beam) Support Erlang/BEAM target in standalone compiler (#4644) (30310e4)

🐞 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)

View changes on Github