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.