WebSharper 4 beta-6 contains updates to DOM and JQuery bindings, erased union types, JS output optimizations and fixes.
Visual Studio 2017, F# 4.1 and C# 7 support are coming soon.
- using FSharp.Compiler.Service
11.0.4. To have optimal compilation speeds, go to a folder in a solution at
./runngenin PowerShell as administrator.
- #650 Bindings to DOM have been updated to current ECMA specification
- #652 Bindings to JQuery have benn updated to version 3.1.1
- #660 Erased union and option types have been added to
Optional. These are similar to
Optiontypes of F#, but work as TypeScript's erased unions in the JS translation. Conversion functions are available under modules
- #550 custom structs can now be used in RPC calls
- #644 F# unions with
Constant nullcase can now be used in RPC calls
- #642 Local generic functions in F# compile when the compiler does not need the type parameter for custom code generation (macros). If it does, you get an error "Macro name would use a local type parameter. Make the inner function non-generic or move it to module level and mark it with the Inline attribute"
- #649 Tail call optimization for F#:
let recexpressions with single or mutual recursion
- Module or class (in default constructor)
let recexpressions with single recursive function
- Class members, calling itself but no other members of the same class annotated with
RemotingProviderattributes can take additional object parameters. These will be passed on to the constructors of the resource class and the client-side
WebSharper.Resources.BaseResourceis not an abstract class any more. This allows using it with the
Requireattribute without defining an extra type:
` fsharp [<Require(typeof<Resources.BaseResource>, "//myurl.com/mylib.js")>]`
- #645 Name conflict in
- #657 Using
Nameattribute on properties with getter and setter now adds
set_to the name of the setter to disambiguate them.
- #633 WIG-defined interfaces now can be inherited from with F#/C# code if they contain only method definitions without custom inline annotations. Calling interface members from
.d.ts-based bindings now translate properly, but these interfaces can't be inherited from in your code (as they are using special call semantics).
- #665 Unpacking Scripts/Contents for web projects required the
WebProjectOutputDirproperty, although previously assumed project root as default. This default has been restored for back-compatibility.
- #668 Printing F# compilation errors and warnings as compiling with
- #667 Fix C# analyzer giving failure warnings on build
Async.StartWithContinuationsnow start the
asyncimmediately as in .NET, possibly finishing synchronously if they contain no bind/combine.
- #671 Fix a translation bug in optimization around calling curried instance members
- #673 integer type
TryParsemethods follow .NET semantics, checking boundaries and disallowing fractions
- #677 Fix using
Inlineon constructors calling into other constructors
returnto produce a value
- #679 exception properties
InnerExceptionshould work for all exception types
Stackconstructors taking a
MacroResult.MacroNeedsResolvedTypeArgnow needs the offending type parameter as a field. You can decide if a type is a type parameter of any kind by using the new