Two of our commercial libraries for F# (F# for Visualization and F# for Numerics) were dependent on the F# PowerPack. We used the rational numbers, vectors, matrices, PSeq and tools like the documentation generator. We have also used fslex and fsyacc in other work and have told many clients to install and use the F# PowerPack over the years.
I’ve read some posts on-line that make it sound as though the PowerPack is being torn apart and the bits put into more specific libraries:
https://github.com/fsharp/fsharpx/issues/165
What is the status of this work? Should we remove dependencies on the PowerPack from our products ASAP or will this process take some time? We’ve actually just removed PowerPack as a dependency from F# for Visualization in favour of structural typing but F# for Numerics is heavily dependent upon the PowerPack.
I notice that the F# PowerPack on CodePlex has a huge number of downloads compared to many other libraries.
Then there is this FSPowerPack.Community Nuget by Dan Mohl:
https://www.nuget.org/packages/FSPowerPack.Community/
Is this Nuget a sideshow or the main way to get F# PowerPack now? I think the latest release on CodePlex is newer (supports .NET 4.5 etc.) than the Nuget. Over 1,180 downloads of its latest version…
To be honest, I would prefer to see much of this functionality put into F# itself, e.g. the documentation generator, rational+vector+matrix types, the PSeq module. I use active patterns for lexing and parsing these days instead of fslex and fsyacc (although perhaps that is because they don’t have VS integration).
The Expert F# 2.0 book had a lot of coverage of the PowerPack. So did my own F# for Scientists and Visual F# 2010 for Technical Computing books. Should I stop referring to the PowerPack in the literature I write?
--
Dr Jon Harrop, Flying Frog Consultancy Ltd.
Hi Jon,
The future is “it stays as it is”. Any future evolution/bug-fixing of the current configuration of these components will happen at http://github.com/fsharp/powerpack. There are some active discussions there at the moment about bringing across the most recent updates.
Copies of some parts are migrating into other projects (notably fsharpx).
If you have a product shipped as a DLL that uses the code internally but doesn’t expose any F# power pack types, then consider eliminating your dependency by ingesting private, internal copies of the F# power pack code (as source code) into the build of your DLL. We did this for the F# compiler itself (if you look around the source code of the compiler you will see copies of around 4 power pack files). Personally I was extremely glad to remove the dependency on another DLL. In the process, I found that about half of the files we depended on were very “thin” dependencies that were better removed altogether by adjusting the referring code.
If your product exposes the F# power pack types (e.g. Matrix/Vector), then consider either
(a) Keeping the status quo; or
(b) Ingesting copies of these as source code and make them part of your public API; or
(c) Moving your product to take a dependency on another math library such as Math.NET Numerics instead.
If you depend heavily on the OCaml compatibility code, then again, ingesting private, internal copies of the compatibility shims would probably make sense.
Cheers
Don
--
--
You received this message because you are subscribed to the Google
Groups "FSharp Open Source Community" group.
To post to this group, send email to fsharp-o...@googlegroups.com
To unsubscribe from this group, send email to
fsharp-opensou...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/fsharp-opensource?hl=en
---
You received this message because you are subscribed to the Google Groups "FSharp Open Source Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fsharp-opensou...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Thanks for the clarification, Don. We’ll plan to migrate the code across.
Looks like our problem was caused by the F# PowerPack 4.0.0.1 being compiled against FSharp.Core version 2.0.0.0. Should it be recompiled against a later FSharp.Core?
Cheers,
Jon.