Changelog for fay-0.19.1.2
See full history at: https://github.com/faylang/fay/commits
- Fix optimizations that were not applied and add codegen test cases.
- Added Data.Char to fay-base
- Don't export transcoding information for fay-base packages when compiling with --no-stdlib
- Better error messages when forgetting the type signature in an FFI declaration
- Made import Prelude is implicit, but note that RebindableSyntax implies NoImplicitPrelude.
- Allow FFI declarations in let and where statements:
let f :: X; f = ffi "..."and
where f :: X; f = ffi "..."
- Removed extra </script> tag that was generated by --html-wrapper
- FFI expressions in top level declarations now produce identical code to a normal top level FFI declaration
- Don't export Data.Ratio and Debug.Trace when using --no-stdlib
- Allow text 1.1
- Allow attoparsec 0.11
Note: 0.18.0.1 added source mappings returned by
Fay:compileFile and friends meaning it should have been a major bump. Sorry about this!
- Add parsing of Integer to Fay.Convert (note that the runtime doesn't have arbitrary precision Integers)
- Allow text 1.0.*
- Add support for indirect application of newtypes (such as
p = NewType; foo = p xand
bar = NewType $ y)
- Fix a bug where records with the same name as top level modules wouldn't be initialized correctly.
- Fail when using enum syntax on unsupported literal types (for instance ['a'..'z'])
- Add support for TupleSections
- Disallow unsupported patterns in where/let declarations instead of
<<loop>>ing on them
- Put upper bounds on all dependencies
//as an operator name (added flag to
- Don't transcode function values when using an EmptyDataDecl
optparse-applicative == 0.7.*
- Regression: Work around a bug in optparse-applicative 0.6 that prevents
--strictfrom being used.
- Source maps for top level definitions, use
- Regression: Equality checks for (G)ADTs (
--strictfor top level ADT values (such as
module M where g = R)
- Regression: Serialization in the presence of compression/renaming
- Pass NoImplicitPrelude (and other enabled extensions) to haskell-names to resolve ambiguities when Prelude isn't imported.
- Bump optparse-applicative to 0.6.*
- Bump haskell-names to 0.3.1 to allow compilation with Cabal 1.14
- Ignore more declarations (useful when code sharing with GHC)
- Support for qualified imports. Note: You still can't have multiple constructors with the same name in the FFI since the
instancefield in the serialization is still unqualified.
--typecheck-onlyjust runs the GHC type checker with the appropriate Fay flags.
--runtime-path FILEPATHallows you to supply a custom runtime. Probably only useful for debugging.
- Don't crash when trying to get the fayToJsFun of an object without constructor.name
- Fixed bug that accidentally flattened list arguments in
- Fix construction with RecordWildCards not taking already listed fields into account
- Fay.Compiler.Debug has been removed (for now)
- The interactive compilation mode has been removed (for now)
- Migrated to haskell-src-ext's annotated AST.
- Name resolution is now done using haskell-names, Fay's name resolution code is now pure and a lot simpler.
fay-textpackage). This is not a breaking change, without these extensions in a module
Stringwill be used, as before. All modules can still interoperate normally even if only some of them use this feature. Note that you may have to define
fromIntegerwhen using this with Num literals.
The type signature of
Fay.FFI.ffi(in fay) and
FFI.ffi(in fay-base) has been generalized to
IsString s => s -> ato support
Much faster compile time (of the compiler itself) by having the executables depend on the library.
- The empty list and unit is now serialized to
nullwhen using Automatic (it used to throw an error).
- Restrict upper bound on
- Support for tuple constructors (
- Remove the
-fdevelflag (when compiling fay itself)
- Allow combining multiline strings with CPP
- New module generation, modules generate code separately in the format
- Transcoding information is also produced separately for each module
--no-dispatcher. They are probably not needed anymore
Fay$$jsToFayUserDefined, instead call
- Escape semi reserved words from
Objectwhen printing (
$constructor). This only matters if you call Fay from JS
Automaticnow handles lists and tuples (#251)
Fay.FFI(as before, Fay code can import
- Print location of parse errors
- Compile with -XNoImplicitPrelude
- Support for testing nested modules (module A, module A.B)
language-ecmascript to >= 0.15(new API)
- Rename/remove some CompileErrors
- All tests are now included in dist
- Force cars in string serialization (#306)
- Expression level FFI calls,
ffi "alert('hello!')" :: Fay ()
- Support let pattern matches
- Smaller output for serialization code
- --base-path flag to use a custom base (mainly for fay-prim)
- Allow ExistentialQuantification, FlexibleContexts, FlexibleInstances, KindSignatures
- Verify that GADTs using non-record syntax works
- JS->Fay function serialization
- Serialization support for
(), tuples and
- Add more reserved words for Google Closure
- Fix a bug when an imported module contains types
- Fix a bug with EModuleContents exports
- Fix where clause inside pattern guards in function definitions
- Fix type variables in serialization for multiple constructors
- Fix EThingAll exports for types with constructors with a different name
- Don't export types in EThingAll and EThingWith
- Support for newtypes (with no runtime cost!)
- --base-path flag to specify custom locations for fay-base
- Fix a bug where imports shadowing local bindings would prevent the local binding from being exported
- Fix record updates on IE <= 8
- Import tweaks, will make compilation a lot faster (4x reported) when there are a lot of imports
- Parse hs sources with base fixities