fsharp icon indicating copy to clipboard operation
fsharp copied to clipboard

The F# Build should cache the generated lexer/parser instead of recreating them all of the time

Open baronfel opened this issue 1 year ago • 1 comments

Is your feature request related to a problem? Please describe.

If the generated lexer and parser were checked in then they wouldn't need to be re-built quite so often. The files are almost perfectly cache-able (the only inputs are the lex/yacc binaries and the fsl/fsy file inputs) and this generation would mean that we don't have to

  • rebuild the packaged lexx/yacc
  • regenerate the parser/lexer

Running this is a cost that every proto build has to pay, for no good reason. Generating the lexer and parser on my machine takes ~12s: image

However, it also takes ~35s to build fslex and fsyacc projects - costs that could be avoided if the files don't need to be generated.

baronfel avatar Apr 08 '24 19:04 baronfel

It will require a. Changes to fslexyacc to generate relative paths inside generated files instead of absolute b. Custom msbuild task which will be hashing both sources and dependant fs files to figure out whether re-generating is needed. OR changes to fslexyacc to handle it properly.

I tried to do that couple of years ago but hit some issues with above

vzarytovskii avatar Apr 09 '24 06:04 vzarytovskii