- Improve decimal support #1627
- Compile fable-core/BigInt from F# #1631
- Add range info to Debugger statement
- Include non-mangled identifier names for source maps
- Optimize tailcalls returning unit #1624
- Fix DateTimeOffset @ncave
- Fix #1607: More descriptive error when two module members have same name
- Fix #1628:
String.filter Char.IsDigit
freezes REPL
- Implement eprintf and eprintfn @inosik
- Fix #1389: Throw proper error when match cases are incomplete @Zaid-Aja
- Fix #1602: constructor "as this" notation
- Only check for Fable.Core major and minor version
- Don't change the first letter of erased union cases in keyValueList
- Updates for creating precompiled libraries
- Fix
isRelativePath
- Fix #1594 Array.partition results are too long @ericharding
- Fix #1599: Folders starting with dot @OnurGumus @inosik
- Check files exist when collecing all sources into single .fsproj @dbrattli
- Don't trigger Symbol.iterator when testing for iterables
- Improvements for Fable REPL @ncave
- Fix #1588: MailboxProcessor.PostAndAsyncReply with falsy values @nilekirk
- Fix #1586: Parsing signed longs @ncave
- Fix #1585: Timespan milliseconds to int conversion
- Fix #1386: Proper convertion to .NET delegates
- More fixes for optimization switch @ncave
- Fix #1583: Generated idents must always be unique
- Fix #1582: Enable Seq.sum(By)/average(By) with custom types
- Fixes for optimization switch @ncave
- Fix sorting of Fable dependencies
- Fable 2
- Update to FCS 25.0.1
- Add replacements for System.Uri @JacobChang
- Fix #1539: 0xFFFFFFFFu is read as 0u in REPL @ncave
- Attach interface members to prototype (as in Fable 1, no cast needed anymore) #1562
- Improvements in fable-core JS files @ncave
- Fix #1551: Truncation of large unsigned bitwise op results @tomcl
- Fix #1337: Add Option.contains @iyegoroff
- Fix #1383: Range with longs
- Fix abstract properties with getter and setter
- Improve int64 conversions @tomcl #1546
- Add full call path for errors in inlined functions
- Fix #1545: Warning when casting to and interface not directly implemented
- Fix extension member overloads
- Compile chars as JS strings (as in Fable 1)
- Add Map.TryGetValue
- Add EnumToValue @zpodlovics #1522
- Fix: Use operators as functions @xdaDaveShaw #1529
- Fix hexadecimal printing @xdaDaveShaw #1535
- Fix overloaded inline methods in other files @dgchurchill #1534
- Fix #1516: Add warning if unit value is replaced
- Fix #1533: Enable inheriting empty interfaces
- Fix #1519: FSharpType.MakeTupleType
- Fix extension member overloads
- Fix: Check bitwise shift left for unsigned integers
- Improvements in pattern matching compilation
- Add --force-pkgs CLI option
- Return non-zero error code when CLI arguments are wrong @theimowski #1515
- Fable 2 beta
- Fix PassGenerics attribute with optional arguments
- Fix interface getter and setter overloads
- Add PhysicalHash (@ncave)
- Check empty/whitespace strings when parsing floats
- Fix #1296 String chunkBySize fails
- Fix #1294: Deserializing F# Result doesn't restore type information (@inosik)
- Change license to MIT
- Remove point-free warning
- Fix #1272 #1274: Decimal literals and parsing
- Fix #1199: Application of point-free functions
- Fix #1291: Inlined object expression shouldn't change
this
context of argument - Fix Compare and Equal for IE11 (@SCullman)
- Fix assignment block optimization inside try...with
- Add PowDouble, RangeChar and RangeDouble (@Zaid-Ajaj)
- Make
Double.Parse
andSingle.Parse
compilable with IFormatProvider (@Zaid-Ajaj) - Add ErrorStrings (@Zaid-Ajaj)
- Add
List.Equals
&List.CompareTo
(@Zaid-Ajaj) - Add
Char.parse
(@inosik)
- Optimize assignment blocks as expressions (#1265)
- Improve method resolution with function parameters
- Fix applicative operators with 3-arg functions
- Add Char.IsWhiteSpace
- Bring back warning for point-free style
- Better error message when
ofJson
fails - Fix application of function options
- Fix #1256: Optimize unions without fields
- Fix #1255: Add Enum.HasFlag
- Fix #838: Return empty group values when group is not matched instead of undefined
- Fix option wrapper in serialization
- Don't pass dependencies to JS clients (see #1241)
- Recompile edited and dependent files in watch compilations and send errors (if any) to client
- Remove point-free warning for now as it was too noisy (see #1244)
- Added List.RemoveRange (PR #1243 by Zaid-Ajaj)
- Built with dotnet SDK 2.0.3 on Windows
- Add warning for point-free style function declarations
- Fix #1238: Inline overloaded methods and "this" double eval
- Fix #1236 #1237: Char.IsUpper, Char.IsDigit and friends
- Fix #1234: Local inline lambdas work standalone
- Fix #1185: Transform importMember expressions for functions
- Optimize watch compilations
- Add dependencies to ensure all necessary files are recompiled in a watch compilation (#1188)
- Enable nested options (#1189, #1219)
- Remove closures generated by F# compiler
- Add DateTimeOffset
- Added inf, nan operators
- Fix #1218: Multiple namespaces in same file
- Fix #1230: Seq.singleton returns empty after first use
- Fix #1227: Names in paket.references are not case sensitive
- Fix #1223: Async.StartChild
- Fix #1216: Print.sprintf (note the qualified module)
- Fix #1204: kprintf works indirectly
- Fix #1203: choose and pick with generic options
- Fix #1201: Cannot find replacement for
System.Char::ToUpper
- Fix #1193 and other string printing errors
- Fix #1190: Trait calls don't check inherited members
- Fix #1187: List.truncate returning one-too-many elements
- Fix #1186: Negated negative values
- Fix #1218: Multiple namespaces in same file
- Add "eval" to JS keywords
- Fix DateTime[Offset].ToString() (without format)
- Add DateTimeOffset
- Added inf, nan operators
- Fix #1223: Async.StartChild
- Fix #1230: Seq.singleton returns empty after first use
- Fix #1227: Names in paket.references are not case sensitive
- Fix #1216: Print.sprintf (note the qualified module)
- More fixes for nested options (see PR #1219)
- Add
PackageType
to dotnet-fable.fsproj
- Fix #1203: choose and pick with generic options
- Fix #1204: kprintf works indirectly
- Fix #1201: Cannot find replacement for
System.Char::ToUpper
- Fix #1193 and other string printing errors
- Fix #1190: Trait calls don't check inherited members
- Fix option handling
- Remove closures generated by F# compiler
- #1188: Add dependencies to ensure all necessary files are recompiled in a watch compilation
- #1189: Enable nested options
- Fix #1187: List.truncate returning one-too-many elements
- Fix #1186: Negated negative values
- Optimize watch compilations with
extra.optimizeWatch
option (see FSharp.Compiler.Service/issues/796)
- Add
jsOptions
helper - Add
List/Array.splitAt
- Add
ParamListAttribute
- Don't reference
Buffer
from fable-core - Fix #1156: Partially applied functions don't duplicate side effects
- Fix #1155: Regex replacing with
$0
doesn't work - Fix #1154: Applying to a function returned by a member works
- Fix #1135, #1136:
unit option
hack doesn't work with generic functions
- Fix #1150: Application of closures generated by F# compiler
- Fix #1143: Seq.cache is not implemented
- Enable Emit Replacements
- Simplify print formatting
- Fix enum to int64 conversion
- Fix null detection in Fable REPL
- Fix cancellation with null tokens
- Guid validation and byte[] conversion
- Fix #1140: Side effects executed twice on Array.map
- Fix #1123: Optimize pattern matching with DUs into switch
- Updated FSharp.Compiler.Service to 14.0.2
- Fix #1120: IDictionary.Clear calls wrong method
- Fix #1121: Function generic type alias conflicts with uncurrying optimization
- Target netstandard1.6 again
- Allow fableCore as global var
- Upgrade to netstandard2.0
- Fix public names conflict error and some cleanup
- Fix warning for Convert.ToBase64String
- Update FSharp.Core
- Optimize string and int literal addition
- Fix watch compilation with errors affecting not modified files
- Fix #1057: Add caught exception to context for reraise
- Update Fable.Core
- Clean up
- Add
Option.defaultWith
andOption.orElse[With]
- Fix #1076: Add Option.flatten replacement
- Fix #1072: Curried application with option type
- Fix instances of base class compiled as super calls
- Fix package transitive dependencies
- Fix #1062: Refactor to improve performance
- Temporary fix for #1057: Disallow
reraise
- Fix #1053: Union cases with single array field in keyValueList resolved at compile-time
- Use Erase attribute with union cases for keyValueList
- Update FCS dependency
- Fix #1040: Expose Array.chunkBySize
- Fix #1041: Point-free style with multiple arguments
- 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: https://docs.npmjs.com/misc/semver#prerelease-tags
- 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 "#")