Fable 5.0.0-alpha.14
Fable: F# |> JS
Fable is an F# to JavaScript compiler powered FSharp Compiler Services, designed to make F# a first-class citizen of the JavaScript ecosystem. Check the website for more information and if you find the project useful, don't forget to give us a star!
Fable actually uses a fork of FCS with a few tweaks. Binaries are in
lib/fcs
folder. See this PR for more info.
Getting started
Check this page.
Building
Requirements
Use VSCode Dev Container
You can use VSCode Dev Container to get a preconfigured environment both with requirements and VSCode extensions.
- You need to have docker installed and running.
- Install the Dev Container extension in VSCode
- Open the project in VSCode and click on the green button in the bottom left corner.
Use your machine
Make sure the following requirements are installed in your system:
Build
Run ./build.sh
or ./build.cmd
to see the build options.
When using VSCode, you can also run the build tasks from the command palette (Ctrl+Shift+P) by typing Run Task
and selecting the task you want to run.
We also configured several debug configurations that you can use from the debug panel (Ctrl+Shift+D). This is useful as you can attach the debugger to the Fable compiler process to check what's going on.
Contributing
Just by using Fable you're already contributing! You can help the community a lot by sharing examples and experiences in your personal (or Fable's) blog and/or by editing the Fable Resources page.
Send bug reports (ideally with minimal code to reproduce the problem) and feature requests to this GitHub repository. To interact with the community you can use the Gitter chat but please note maintainers are not checking the chat regularly.
If you are up to contribute a fix or a feature yourself, you're more than welcome! Please send first an issue or a minimal Work In Progess PR so we can discuss the implementation details in advance.
List of changelogs
Added
- [Python] Support for Nullable Reference Types (by @dbrattli)
- [JS/TS] Fix #3533: Add directives prologues supports (by @MangelMaxime)
- [JS/TS] Support for Nullable Reference Types (by @ncave and @MangelMaxime)
- [Rust] Initial support for Nullable Reference Types (by @ncave)
Changed
- [Python] Use Python 3.12 type parameter syntax. Deprecate Python 3.10 and 3.11 (by @dbrattli)
- [Python] Records now snake-cases all member fields (by @dbrattli)
- [Python] Anonymous records now preserves the casing of member fields (by @dbrattli)
- [Python] Option type is now
Option[T]
instead ofT | None
(by @dbrattli) - [Python] Use uv instead of Poetry for package management (by @dbrattli)
- [Python] Fable Library for Python is now partially written in Rust (by @dbrattli)
- [All] Improve filewatcher error messages (by @goswinr)
Fixed
- [Python] Fixed static properties and are now translated as Python class attributes (by @dbrattli)
- [Python] Fixed DateTime with DateTimeKind generates proper enum reference (#3689) (by @dbrattli)
- [Python] Fixed Dictionary KeyValuePair enumeration when casting to IEnumerable (#3771) (by @dbrattli)
- [Python] Fixed
createEmpty<T>
for interfaces usingSimpleNamespace
with type casting (#3604) (by @dbrattli) - [Python] Fixed EmitMethod + ParamObject losing keyword arguments (#3871) (by @dbrattli)
- [Python] Fixed EmitConstructor + ParamObject losing keyword arguments (#3871) (by @dbrattli)
- [Python] Fixed DateTimeOffset.TryParse, ToString() and Offset property access (#3854) (by @dbrattli)
- [Python] Fixed anonymous records in Maps causing comparison errors (#3869) (by @dbrattli)
- [Python] Fixed handling of erased types for Python (#3968) (by @dbrattli)
- [Python] Fixed unit function (zero arguments functions) are transpiled inconsistently (#4126) (by @dbrattli)
- [Python] Fixed resource managers with empty body (#3912) (by @dbrattli)
- [Python] Fixed
Async.Sleep
to handle TimeSpan correctly (#4137) (by @dbrattli) - [Python] Make sure snake-cased Record do not conflict (by @dbrattli)
- [Python] Do not return None | None for optional unit types (#4127) (by @dbrattli)
- [JS/TS] JSX : Alias
empty
CEs list tonull
when encountered in thechildren
list (by @MangelMaxime) - [JS/TS] JSX : Allow usage of
unbox
when definining properties forJSX.create
(by @MangelMaxime)
Version | Downloads | Last updated |
---|---|---|
5.0.0-alpha.14 | 1 | 07/28/2025 |
5.0.0-alpha.13 | 0 | 05/04/2025 |
5.0.0-alpha.12 | 0 | 03/14/2025 |
5.0.0-alpha.11 | 0 | 03/03/2025 |
5.0.0-alpha.10 | 0 | 02/16/2025 |
5.0.0-alpha.9 | 2 | 07/28/2025 |
5.0.0-alpha.8 | 1 | 07/28/2025 |
5.0.0-alpha.7 | 1 | 07/28/2025 |
5.0.0-alpha.6 | 1 | 07/28/2025 |
5.0.0-alpha.5 | 1 | 07/28/2025 |
5.0.0-alpha.4 | 1 | 07/28/2025 |
5.0.0-alpha.3 | 1 | 07/28/2025 |
5.0.0-alpha.2 | 1 | 07/28/2025 |
5.0.0-alpha.1 | 1 | 07/28/2025 |
4.25.0 | 0 | 04/26/2025 |
4.24.0 | 0 | 11/19/2024 |
4.23.0 | 0 | 10/28/2024 |
4.22.0 | 0 | 10/02/2024 |
4.21.0 | 0 | 09/19/2024 |
4.20.0 | 0 | 09/04/2024 |
4.19.3 | 0 | 06/17/2024 |
4.19.2 | 0 | 06/13/2024 |
4.19.1 | 0 | 06/13/2024 |
4.19.0 | 0 | 06/10/2024 |
4.18.0 | 0 | 05/23/2024 |
4.17.0 | 0 | 04/23/2024 |
4.16.0 | 0 | 03/20/2024 |
4.15.0 | 0 | 03/18/2024 |
4.14.0 | 0 | 03/01/2024 |
4.13.0 | 0 | 02/20/2024 |
4.12.2 | 0 | 02/13/2024 |
4.12.1 | 0 | 02/13/2024 |
4.11.0 | 0 | 01/30/2024 |
4.10.0 | 0 | 01/25/2024 |
4.9.0 | 1 | 07/28/2025 |
4.8.1 | 1 | 07/28/2025 |
4.8.0 | 0 | 12/12/2023 |
4.7.0 | 1 | 07/28/2025 |
4.6.0 | 0 | 11/27/2023 |
4.5.0 | 0 | 11/07/2023 |
4.4.1 | 0 | 10/25/2023 |
4.4.0 | 0 | 10/24/2023 |
4.3.0 | 0 | 10/18/2023 |
4.2.2 | 0 | 10/14/2023 |
4.2.1 | 1 | 07/28/2025 |
4.1.4 | 0 | 05/16/2023 |
4.1.3 | 1 | 07/28/2025 |
4.1.2 | 1 | 07/28/2025 |
4.1.1 | 0 | 04/22/2023 |
4.1.0 | 1 | 07/28/2025 |
4.1.0-beta-001 | 0 | 04/16/2023 |
4.0.5 | 1 | 07/28/2025 |
4.0.4 | 0 | 04/04/2023 |
4.0.3 | 1 | 07/28/2025 |
4.0.2 | 1 | 07/28/2025 |
4.0.1 | 1 | 07/28/2025 |
4.0.0 | 0 | 03/14/2023 |
4.0.0-theta-018 | 0 | 11/19/2022 |
4.0.0-theta-017 | 0 | 11/16/2022 |
4.0.0-theta-016 | 0 | 11/13/2022 |
4.0.0-theta-015 | 0 | 11/05/2022 |
4.0.0-theta-014 | 0 | 10/31/2022 |
4.0.0-theta-012 | 0 | 10/14/2022 |
4.0.0-theta-011 | 0 | 10/04/2022 |
4.0.0-theta-010 | 0 | 09/28/2022 |
4.0.0-theta-009 | 0 | 09/28/2022 |
4.0.0-theta-008 | 0 | 09/22/2022 |
4.0.0-theta-007 | 0 | 09/21/2022 |
4.0.0-theta-006 | 0 | 09/18/2022 |
4.0.0-theta-005 | 1 | 07/29/2025 |
4.0.0-theta-004 | 0 | 09/14/2022 |
4.0.0-theta-003 | 0 | 09/12/2022 |
4.0.0-theta-002 | 0 | 09/11/2022 |
4.0.0-theta-001 | 0 | 09/09/2022 |
4.0.0-snake-island-alpha-026 | 0 | 09/08/2022 |
4.0.0-snake-island-alpha-025 | 0 | 09/06/2022 |
4.0.0-snake-island-alpha-024 | 0 | 09/02/2022 |
4.0.0-snake-island-alpha-023 | 0 | 08/30/2022 |
4.0.0-snake-island-alpha-021 | 0 | 08/21/2022 |
4.0.0-snake-island-alpha-020 | 0 | 08/14/2022 |
4.0.0-snake-island-alpha-019 | 0 | 07/31/2022 |
4.0.0-snake-island-alpha-018 | 0 | 07/30/2022 |
4.0.0-snake-island-alpha-017 | 0 | 07/27/2022 |
4.0.0-snake-island-alpha-016 | 0 | 07/26/2022 |
4.0.0-snake-island-alpha-015 | 0 | 07/26/2022 |
4.0.0-snake-island-alpha-014 | 0 | 07/25/2022 |
4.0.0-snake-island-alpha-013 | 0 | 07/25/2022 |
4.0.0-snake-island-alpha-012 | 0 | 07/12/2022 |
4.0.0-snake-island-alpha-011 | 0 | 06/23/2022 |
4.0.0-snake-island-alpha-010 | 0 | 06/03/2022 |
4.0.0-snake-island-alpha-009 | 0 | 06/02/2022 |
4.0.0-snake-island-alpha-008 | 0 | 06/01/2022 |
4.0.0-snake-island-alpha-007 | 0 | 05/25/2022 |
4.0.0-snake-island-alpha-006 | 0 | 05/24/2022 |
4.0.0-snake-island-alpha-005 | 0 | 05/23/2022 |
4.0.0-snake-island-alpha-004 | 0 | 05/21/2022 |
4.0.0-snake-island-alpha-003 | 0 | 05/20/2022 |
4.0.0-snake-island-alpha-002 | 0 | 05/19/2022 |
4.0.0-snake-island-alpha-001 | 0 | 05/11/2022 |
3.7.22 | 0 | 05/11/2023 |
3.7.21 | 0 | 05/11/2023 |
3.7.20 | 0 | 09/27/2022 |
3.7.19 | 0 | 09/27/2022 |
3.7.18 | 0 | 08/16/2022 |
3.7.17 | 0 | 07/21/2022 |
3.7.16 | 0 | 07/05/2022 |
3.7.15 | 0 | 06/29/2022 |
3.7.14 | 0 | 06/14/2022 |
3.7.12 | 0 | 05/27/2022 |
3.7.11 | 0 | 05/01/2022 |
3.7.10 | 0 | 04/29/2022 |
3.7.9 | 0 | 04/01/2022 |
3.7.8 | 1 | 07/28/2025 |
3.7.7 | 0 | 03/22/2022 |
3.7.6 | 0 | 03/16/2022 |
3.7.5 | 1 | 07/28/2025 |
3.7.4 | 1 | 07/28/2025 |
3.7.3 | 0 | 02/23/2022 |
3.7.2 | 1 | 07/28/2025 |
3.7.1 | 1 | 07/28/2025 |
3.7.0 | 1 | 07/28/2025 |
3.7.0-beta-015 | 0 | 01/26/2022 |
3.7.0-beta-014 | 0 | 01/24/2022 |
3.7.0-beta-012 | 0 | 01/18/2022 |
3.7.0-beta-011 | 0 | 01/14/2022 |
3.7.0-beta-010 | 0 | 01/14/2022 |
3.7.0-beta-009 | 0 | 01/12/2022 |
3.7.0-beta-008 | 0 | 01/11/2022 |
3.7.0-beta-007 | 0 | 01/11/2022 |
3.7.0-beta-006 | 0 | 01/11/2022 |
3.7.0-beta-005 | 0 | 01/07/2022 |
3.7.0-beta-004 | 0 | 01/05/2022 |
3.7.0-beta-003 | 0 | 01/04/2022 |
3.7.0-beta-002 | 0 | 12/28/2021 |
3.7.0-beta-001 | 0 | 12/20/2021 |
3.6.3 | 0 | 12/01/2021 |
3.6.2 | 1 | 07/28/2025 |
3.6.1 | 0 | 11/23/2021 |
3.6.0 | 0 | 11/19/2021 |
3.6.0-beta-003 | 0 | 11/17/2021 |
3.6.0-beta-002 | 0 | 11/15/2021 |
3.6.0-beta-001 | 0 | 11/14/2021 |
3.4.10 | 0 | 11/08/2021 |
3.4.9 | 1 | 07/28/2025 |
3.4.8 | 1 | 07/28/2025 |
3.4.7 | 0 | 10/28/2021 |
3.4.6 | 0 | 10/26/2021 |
3.4.5 | 0 | 10/21/2021 |
3.4.4 | 0 | 10/20/2021 |
3.4.3 | 0 | 10/14/2021 |
3.4.2 | 1 | 07/28/2025 |
3.4.1 | 1 | 07/28/2025 |
3.4.0 | 2 | 07/28/2025 |
3.3.1 | 0 | 09/27/2021 |
3.3.0 | 0 | 09/16/2021 |
3.3.0-beta-002 | 0 | 08/28/2021 |
3.3.0-beta-001 | 0 | 08/27/2021 |
3.2.14 | 0 | 09/11/2021 |
3.2.12 | 0 | 08/26/2021 |
3.2.11 | 0 | 08/19/2021 |
3.2.10 | 0 | 08/02/2021 |
3.2.9 | 0 | 07/08/2021 |
3.2.8 | 1 | 07/28/2025 |
3.2.7 | 1 | 07/28/2025 |
3.2.6 | 0 | 06/22/2021 |
3.2.5 | 1 | 07/28/2025 |
3.2.4 | 1 | 07/28/2025 |
3.2.3 | 0 | 06/11/2021 |
3.2.2 | 0 | 06/03/2021 |
3.2.1 | 1 | 07/28/2025 |
3.2.0 | 1 | 07/28/2025 |
3.1.16 | 0 | 05/14/2021 |
3.1.15 | 0 | 04/16/2021 |
3.1.14 | 0 | 04/09/2021 |
3.1.12 | 0 | 03/23/2021 |
3.1.11 | 0 | 03/17/2021 |
3.1.10 | 0 | 03/16/2021 |
3.1.9 | 1 | 07/28/2025 |
3.1.8 | 1 | 07/28/2025 |
3.1.7 | 1 | 07/28/2025 |
3.1.6 | 1 | 07/28/2025 |
3.1.5 | 0 | 02/18/2021 |
3.1.4 | 1 | 07/28/2025 |
3.1.3 | 0 | 02/12/2021 |
3.1.2 | 1 | 07/28/2025 |
3.1.1 | 0 | 01/13/2021 |
3.1.0 | 0 | 01/11/2021 |
3.1.0-beta-001 | 0 | 01/08/2021 |
3.0.5 | 1 | 07/28/2025 |
3.0.4 | 1 | 07/28/2025 |
3.0.3 | 0 | 12/18/2020 |
3.0.2 | 1 | 07/28/2025 |
3.0.1 | 0 | 12/11/2020 |
3.0.0 | 0 | 12/04/2020 |
3.0.0-nagareyama-rc-011 | 0 | 12/02/2020 |
3.0.0-nagareyama-rc-010 | 0 | 11/28/2020 |
3.0.0-nagareyama-rc-009 | 0 | 11/25/2020 |
3.0.0-nagareyama-rc-008 | 0 | 11/19/2020 |
3.0.0-nagareyama-rc-007 | 0 | 11/15/2020 |
3.0.0-nagareyama-rc-006 | 0 | 11/13/2020 |
3.0.0-nagareyama-rc-005 | 0 | 11/12/2020 |
3.0.0-nagareyama-rc-004 | 0 | 11/10/2020 |
3.0.0-nagareyama-rc-003 | 0 | 11/09/2020 |
3.0.0-nagareyama-rc-002 | 0 | 11/08/2020 |
3.0.0-nagareyama-rc-001 | 0 | 11/07/2020 |
3.0.0-nagareyama-beta-005 | 0 | 10/31/2020 |
3.0.0-nagareyama-beta-004 | 0 | 10/27/2020 |
3.0.0-nagareyama-beta-003 | 0 | 10/25/2020 |
3.0.0-nagareyama-beta-002 | 0 | 10/23/2020 |
3.0.0-nagareyama-beta-001 | 0 | 10/23/2020 |
3.0.0-nagareyama-alpha-017 | 0 | 10/22/2020 |
3.0.0-nagareyama-alpha-016 | 0 | 10/22/2020 |
3.0.0-nagareyama-alpha-015 | 0 | 10/19/2020 |
3.0.0-nagareyama-alpha-014 | 0 | 10/18/2020 |
3.0.0-nagareyama-alpha-012 | 0 | 10/15/2020 |
3.0.0-nagareyama-alpha-011 | 0 | 10/15/2020 |
3.0.0-nagareyama-alpha-010 | 0 | 10/13/2020 |
3.0.0-nagareyama-alpha-009 | 0 | 10/11/2020 |
3.0.0-nagareyama-alpha-008 | 0 | 10/05/2020 |
3.0.0-nagareyama-alpha-007 | 0 | 10/02/2020 |
3.0.0-nagareyama-alpha-006 | 0 | 09/30/2020 |
3.0.0-nagareyama-alpha-005 | 0 | 09/29/2020 |
3.0.0-nagareyama-alpha-004 | 0 | 09/28/2020 |
3.0.0-nagareyama-alpha-003 | 0 | 09/14/2020 |
3.0.0-nagareyama-alpha-002 | 0 | 09/13/2020 |
3.0.0-nagareyama-alpha-001 | 0 | 09/13/2020 |