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 packages\Zafir.FSharp.4.0.155.11-beta6\tools and run ./runngen in 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 WebSharper.JavaScript namespace, named Union and Optional. These are similar to Choice and Option types of F#, but work as TypeScript's erased unions in the JS translation. Conversion functions are available under modules Optional and Union.
#651 output is using JavaScript strict mode
#550 custom structs can now be used in RPC calls
#644 F# unions with Constant null case 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"
#648 JavaScript code output optimizations:
List.map2#649 Tail call optimization for F#:
let rec expressions with single or mutual recursionlet rec expressions with single recursive functionJavaScript (so inlines do not opt-out of optimization). For instance members, the call must be on the current instance.#655 Require and RemotingProvider attributes can take additional object parameters. These will be passed on to the constructors of the resource class and the client-side RemotingProvider instance respectively.
WebSharper.Resources.BaseResource is not an abstract class any more. This allows using it with the Require attribute without defining an extra type:
[<Require(typeof<Resources.BaseResource>, "//myurl.com/mylib.js")>]
WebSharper.Sitelets.Content from C#Name attribute on properties with getter and setter now adds set_ to the name of the setter to disambiguate them..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).WebProjectOutputDir property, although previously assumed project root as default. This default has been restored for back-compatibility.fsc.exe would, respecting nowarn, warn, warnon, warneserror flagsAsync.StartImmediate and Async.StartWithContinuations now start the async immediately as in .NET, possibly finishing synchronously if they contain no bind/combine.Parse and TryParse methods follow .NET semantics, checking boundaries and disallowing fractionsInline on constructors calling into other constructorsreturn to produce a valueMessage and InnerException should work for all exception typesQueue and Stack constructors taking a seq<'T> (IEnumerable<T>)MacroResult.MacroNeedsResolvedTypeArg now 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 IsParameter property.Can’t find what you were looking for? Drop us a line.