fsharp icon indicating copy to clipboard operation
fsharp copied to clipboard

task defined as top-level static value doesn't get statically compiled

Open dsyme opened this issue 4 years ago • 0 comments

Most the time tasks are defined in functions, e.g.

let f() = task { return 1 }

That's fine, however if you define a task as a top-level value (e.g. in F# Interactive) you get a warning that a dynamic task implementation is used:

> task { return 1 };;

  task { return 1 };;
  ^^^^

stdin(2,1): warning FS3511: This state machine is not statically compilable. A resumable code invocation at '(2,0--2,4)' could not be reduced. An alternative dynamic implementation will be used, which may be slower. Consider adjusting your code to ensure this state machine is statically compilable, or else suppress this warning.

It's not a super-critical show-stopping bug because

  1. the task still runs correctly
  2. it's rare to define tasks like this in project code (however it may happen a lot in notebooks)
  3. tasks at the top-level like this are never perf-critical

dsyme avatar Aug 25 '21 17:08 dsyme