All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add
DataView.getBigInt64
by (@PierreYvesR) - Add
DataView.getBigUint64
by (@PierreYvesR) - Add
DataView.setBigInt64
by (@PierreYvesR) - Add
DataView.setBigUint64
by (@PierreYvesR)
- Add
NumberConstructor.EPSILON
(by @MangelMaxime) - Add
NumberConstructor.isFinite
(by @MangelMaxime) - Add
NumberConstructor.isInteger
(by @MangelMaxime) - Add
NumberConstructor.isSafeInteger
(by @MangelMaxime) - Add
NumberConstructor.MAX_SAFE_INTEGER
(by @MangelMaxime) - Add
NumberConstructor.MIN_SAFE_INTEGER
(by @MangelMaxime) - Add
NumberConstructor.parseFloat
(by @MangelMaxime) - Add
NumberConstructor.parseInt
(by @MangelMaxime)
- Change
NumberConstructor.isNaN
fromfloat -> bool
toobj -> bool
(by @MangelMaxime)
- Fix #3482: Revert removal of
Py.python
andPy.expr_python
(by @dbrattli)
- Fix #3482: Remove
Py.python
andPy.expr_python
- Add
!^
toFable.Core.RustInterop
module - Fix #3484: Rename
emitStatement
toemitPyStatement
inPyInterop
- Fix #3484: Rename
emitExpr
toemitPyExpr
inPyInterop
- Fix #3484: Replace
Rust.emitExpr
withRustInterop.emitRustExpr
- Fable 4 stable
- Fix #3249 by enabling uncurrying for functions with multiple parameters @inosik
- Python fixes for decorator attribute
- Add JSX.jsx function
- Add ??= operator to JsInterop
- Python fixes for Interactive
- Python helpers for Interactive
- JS helpers for JSX/React integration
- Fable 4 theta release
- Snake Island alpha release
- Some Rust helpers
- DartNullable and other Dart helpers
- JSX string templates
- Add Dart print/Future/Stream
- JSX Support
- Snake Island alpha release
- Add
AsyncIterable
to Fable.Core.JS
- Fix #2863: Add a nestable union type U9 @cannorin
- Fix links in doc comments
- Fix #2805: Improve jsNative error messages
- Revert changes in Core.JS, see Fulma/issues/294
- TypescriptTaggedUnion @cannorin
- Add Fable.Core.Compiler.triggeredByDependency flag
- ParamObject attribute
- JS.Decorator/ReflectedDecorator attributes
- JS.Function
- Add
FormattableString.GetStrings()
extension
- Experimental.namesofLambda
- Publish with icon and symbols @cartermp
- Experimental
casenameWithFieldIndex
- Add
Compiler.extension
- Add Object.values, Object.entries @kerams
- Add JsInterop.jsTypeof/jsInstanceof
- Add JS.Constructors.Array.Create/from
- Fix incompatibility with Feliz @TIHan
AttachMembers
attribute
- Lower FSharp.Core requirement to 4.7.2
- New helpers for Fable 3
Mangle
attributeisStatement
parameter forEmit
attributeemitJsExpr
andemitJsStatement
helpers- Access compiler options in
Compiler
module
- Fixed TypedArray.set signature @Shmew
- Fixed missing indexer in JS TypedArray.
- Fix JS Map constructor @Luiz-Monad
- PR #1935: Put JS constructors in different module to prevent conflicts @pauldorehill
- Add CaseRules.SnakeCase
- Fix TypedArray bindings @Titaye
- Add JS Typed Arrays @Titaye
- Fix names of arguments in Testing.Assert @zanaptak
- Add
JsInterop.importValueDynamic
- Move
nameof
operators to Experimental module - JS extensions
- Add Emit and Import attribute aliases
- Namespace restructure
- Add
JsInterop.importValueDynamic
- Move
nameof
operators to Experimental module
- Move JS extensions to Fable.Core.Extensions file
- Add some missing JS APIs
- Array .buffer extension
- Add Emit and Import attribute aliases
- Namespace restructure
- Clean Fable.Import.JS module and rename it to Fable.Core.JS
- Add unions of measure for non-numeric primitive types
- Add
Fable.Core.Reflection
module
- Add
nameof2
andexportDefault
- Fix
ReadonlyArray
spelling
- Fable 2
- See dotnet-fable 1.3.7 release notes
- See dotnet-fable 1.3.0-beta-009 release notes
- See dotnet-fable 1.2.4 release notes
- Fix #1135, #1136:
unit option
hack doesn't work with generic functions
- See Fable.Compiler 1.2.2
- Guid validation and byte[] conversion
- Date Fix #1139
- Add support for String.filter #1133
- Fix #1131: DateTime.ToString not working without separator
- Fix format over local dates #1129
- Fix 2 digits years datetime #1127
- Don't calculate relative path for paths in different drive letters on Windows
- Target netstandard1.6 again
- Upgrade to netstandard2.0
- Fix #1113: Set.union
- Fix #1104: JSON serialization of Long and BigInt
- Add DateTime ticks constructor
- Convert to and from Base64String
- Fix #1094: Implement "indexed" in collection modules
- Fix recursive functions in Seq module
- Add constructors to JsFunc
- Small refactoring
- Add
DateTime.IsDaylightSavingTime
replacement (#1082, #1083)
- Support String.Join with objects (#1058)
- Fix #1046: Parse time-only strings
- Support some System.Uri static methods (#1048)
- Fix #1028: Arguments of auto-generated lambdas conflicting with outer variables
- Fix fable-import/#9: Don't try to replace method calls in bindings
- Add System.Console reference
- Fix Paket groups for Fable.Core
- Fix F# compiler errors in recompilation
- Fix Elmish.Browser parser (#1003)
- Add support for Option.defaultValue
- Warn when there are nested options
- Add replacement for System.Environment.NewLine (#993)
- Expose Console among JS import globals
- Fable stablish, yeah!
- Fix #996: Don't wrap dynamic CurriedLambdas
- Support Paket groups and move Browser and Node bindings out of Fable.Core
- Fix #940: Compilation of multiple projects in parallel
- Fix #952: Don't remove non-null unit arguments
- Fix #944: Import and Emit on same function
- Propagate subprocess exit code
- Fix #946: --port free throws exception
- Don't redirect dotnet-fable commands but check version and locate fable-core JS files in packages/Fable.Core
- Fix location of fable-core files
- We're going PAKET!
- Fix curried lambdas assigned to generic params (see #888)
- Fix #744: CLI argument flags
- Fix #736: Case testing with erased unions
- Tailcall optimizes function arguments: #681
- Fix import expressions with methods with function arguments: #721
- Add reflection methods (see ReflectionTests.fs)
- Improve import expressions #721
- Tailcall optimizations: PR #669 + Fixes
- Add FSharp.Core.dll to fable-compiler package
- Improve handling of
jsThis
- Only show Rollup warnings in
--verbose
mode - Minor fixes
- Fix #660:
Option.fold
andOption.foldBack
- Add operator
enum
- Fixed default comparer: PR #658
- Added BigInt conversions: PR #650
- Fix #649: Int64 serialization
- Fix #648: Caching of namespace F# entities
- Fix #646: Zero fill shift right (>>>) for uint32
- Add
BigInteger
support
- Fix #640: Omitted non optional nulls
- Fix #638: Inlined methods with
this
argument
- Add
--includeJs
compiler argument - Fix #629: Visual Studio error format
- Fix #637: IEnumerable runtime issue
- Fixed Option.foldBack (#634)
- Improve .NET Enumerator/JS Iterator compatibility
- Fix #633: jsThis
- Fixed Option.foldBack (PR #634)
- Fix #623: JS Global properties
- Fix #624: Aether compilation
- Fix module generic methods without arguments
- Added
String.IndexOfAny/Compare/Equals
withStringComparison
enum - Fix generic types when compiling to ES2015
- Unify
Equals
andCompareTo
methods ofLong.ts
- Fix #348 #608 Double/Int32 Parse & TryParse
- Fix #609: Event unsubscription
- Fix custom exception type testing in ES5
- Inline local lambdas as values (#601)
- Fix edge case in
toJson
(#611) - Fix fable-core Babel compilation
- Added 64-bit integers (#600)
- Fix #237: Recursive value definitions
- Added char to int (#594)
- Fix secondary constructors of imported classes
- Improvements in option handling
- Prevent infinite loops for bundle errors in watch mode
- Fix #509: Add KeyValuePattern
- Fix #544 #585: Bundling in watch mode
- Fix #589: Regex Provider with Fable 0.7
- Add optional argument to GlobalAttribute
- Add validation to
ofJson
- Make
Assert.AreEqual
work with F# equality - Improve dynamic programming (add
jsThis
) - Add
Printf.kprintf
(#583) - Fix sprintf "%X" (#580)
- Fix #579: Printf.printfn
- Add
Pojo
union types
- Fix issues in generic resolution
- Issue warning when calling
typeof
on a generic parameter - Use absolute paths for assembly references in
node_modules
- Use "umd" distribution of fable-core and other libs when compiling for umd modules
- Fix #569: Types with circular dependencies
- Fix #568: Types with
StructAttribute
(compiled as records) - Better checking when calling functions with
PassGenericsAttribute
- Some adjustments in attribute resolution
- Fix #565, #566: Only watch F# files
- Fix #564: Don't overload methods from imported classes
- Fix #563: Overloads with
PassGenericsAttribute
- Fix
Array.rev
(see #559) - Added UnboxFast intrinsic / List.truncate (see #561)
System.Exception
translates to JSError
- Fix #556: inline methods placed after calls
- Fix ES2015 imports
- Too many changes to be listed, check the migration guide
- Fix cyclic dependencies in fable-core
- Minor fix
- Simplify Reflection system
- Add
PojoAttribute
- Replace baseDir of references with --refs argument
- Fix #547: Ignored entities conflicting when calculating root namespace
- Mangle class methods when they conflict with an implemented interface
- Fix #545: Using
Microsoft.FSharp
namespace
- Add
import: selector->path->'T
to import expressions - Make arguments of JsConstructor statically typed
- Add logs when compiling files for bundling
- Fix default watch directories
- Ignore interfaces
- Compile scripts referenced as plugins
- Apply Replace plugins to any call
- Include in compilation JS files with relative paths
- Fix #535: Script referenced entity replacements
- Allow configuration of watching dirs
- Fix infinite recursion when resolving generic parameters
- More meaningful runtime representation of non-declared types
- When inlining, assign arguments referenced more than once to a temp var
Array.zeroCreate
fills non-numeric arrays with null
- Resolve trait calls as normal method calls (check EmitAttribute, etc)
- Fix mangled interfaces
- Improve error messages
- Add
MangleAttribute
to prevent conflicts with interfaces - Allow combination of
ImportAttribute
andEmitAttribute
- Several fixes
- Add catch-all for missing replacements when referencing types of the BCL or FSharp.Core
- Omit
.js
extension again in imports to keep compatibility with Require.js
- Don't print warnings in process.stderr (see #516)
- Add
String/formatError
(see #519) - Add
.js
extension tofable-core
and internal imports
- Distribute fable-core with ES2015 (default) and UMD module formats
- Don't deem interface setters as overloads (see #505)
- Update FCS and use Forge to read .fsproj files (removes MSBuild dependency)
- Bug fixes and optimizations
- Add JsFunc and JsCons to Fable.Core.JsInterop
- Use outDir to place the generated dll with .fsproj projects
- Only emit warnings when generating dlls in verbose mode
- Fix error when reading Rollup options
- Fix errors in Fable JS API
- Change
--bundle
option to--rollup
--rollup
can accept an object (in fableconfig.json) with Rollup config- Improve plugin resolution for Babel and Rollup
- Add a block scope to switch cases (see #483)
- Fix invalid identifiers in top level members (see #482)
- Generate
dll
also forfsproj
files - Expose Fable library to JS API
- Fix issues with bundling and
System.Exception
- Fix problems with
dll
generation
- Add experimental
--dll
compiler option to generate assemblies
- Fix path resolution when referencing assemblies
- Fix partial patterns not returning any value (see #478)
- Minor fixes
- Resolve relative paths of referenced projects/dlls as
if they were pointing to generated JS code from the fsproj/dll file
(
EntryModuleAttribute
) or from working directory (--refs
) and make them reachable fromoutDir
(see #472) - Always resolve relative paths in command line options with the directory from where fable is called
- Fix prerelease semver. See documentation
- Add
typedefof<>
,.IsGenericType
,.GetGenericTypeDefinition
- Resolve import relative paths so they can be reached from
outDir
if they don't point to an internal file (see #472)
- Add warning when creating references of types unknown at compile time
- Convert functions to delegates when passed as arguments to EmitAttribute
- Add warning when passing generic param to Serialize.ofJson/inflate
- Add
--bundle
compiler option - Bring back JSON serialization with
$type
info
- Add type info to JS constructors: cases (unions) and properties (records and classes)
- Extend type references with generic info when calling
typeof
- Add
GenericParamAttribute
to implicitly pass type info of generic parameters - Add
MutatingUpdateAttribute
to compile record updates as mutations - Add
EntryModuleAttribute
to mark assemblies as Fable libraries
- Revert change from 0.6.14: ES6 modules automatically enable strict mode, so the directive is not needed
- Add always "use strict" directive
- Now fableconfig.json can be in JSON5 format (comments!)
- Omit lambda argument when it's of unit type
- Don't wait until "postbuild-once" script is finished (see #432)
- Fix #431: Add --babelrc compiler option
- Fix #432: Add "postbuild-once" script
- Fix #433: Add --noTypedArrays compiler option
- Fix #436: Inform users about not supported overloads of String.IndexOf/LastIndexOf
- Fix #438: Incorrect this in local let functions creating object expressions
- Fix #439: IDE locking project file and preventing watch compilations
- Change compilation defaults: module=commonjs & loose=true
- Fix #416: Can't ifdef around a load directive
- Fix List.unfold: PR #428
- Use reference hint paths for netcore: PR #423
- Support ResizeArray.FindAll: PR #412
- Support decimal (converted to JS number): PR #413
- Support recursive records: PR #417
- Fix #411: for .. downto
- Fix watch compilation on Windows
- Integer conversions (see #407)
- Multiple bug fixes
- Internal Fable AST additions
- Rewrite plugins
- Use let/const when compiling value bindings to ES6
- Compile pattern matching with string or number literals as switch statements
- Fix #382 (partially): Exclude files in "node_modules" when calculating the base directory of referenced dlls.
- Fix #369: Extra blank lines when running postbuild script
- Fix #375: Add warning when replacements change semantics (printf, Async.Start...)
- Fix #377: Remove null args at the end of method/constructor calls also with macros
- Fix type testing with Erased Unions
- Erase assigments generated for tuple, record and union gets
- Fix #370: Add warning when using unions or records with Dictionary (as keys) or HashSet
- Internal cleanup
- Use chokidar to watch for file changes
- Fix calculation of relative paths with special characters (like "#")