This program constitutes a generic package manager for Standard ML libraries and programs. The package manager assumes nothing and knows nothing about the Standard ML compilers used and is thus quite generic.
The package manager is centered around the notion of semantic versioning and supports packages that, for instance, are hosted on GitHub and GitLab.
The package manager takes care of downloading and upgrading dependent packages and works well with the use of MLB files supported by Standard ML compilers such as MLton, MLKit, and SMLtoJs.
$ smlpkg add github.com/diku-dk/sml-random
This command modifies only sml.pkg and creates it if it does not already exist.
$ smlpkg sync
This command populates the lib directory based on the packages listed in sml.pkg.
$ smlpkg init github.com/foo/bar
This command creates a file sml.pkg and initiates it with the given
package name (foo should be a github user name or an organisation
name and bar should be a repository name). You can now add code in the
directory lib/github.com/foo/bar/.
$ git tag vX.Y.Z
$ git push --tags
Remember to follow semantic versioning. Once a
package has been released, other packages can safely add the package
to their own source code tree using smlpkg add (see above).
The lists below constitute some available packages. The lists are divided into
packages that are generic (should work with any Standard ML compiler that
supports basis files) and packages that are supported only for particular
compilers (e.g., MLKit, Mlton, and polymlb).
github.com/diku-dk/futhark-data-sml
github.com/diku-dk/futhark-server-sml
github.com/diku-dk/sml-aplparse
github.com/diku-dk/sml-base64
github.com/diku-dk/sml-complex
github.com/diku-dk/sml-cstring
github.com/diku-dk/sml-hashtable
github.com/diku-dk/sml-http
github.com/diku-dk/sml-json
github.com/diku-dk/sml-matrix
github.com/diku-dk/sml-md5
github.com/diku-dk/sml-getopt
github.com/diku-dk/sml-parse
github.com/diku-dk/sml-pickle
github.com/diku-dk/sml-pretty
github.com/diku-dk/sml-regexp
github.com/diku-dk/sml-random
github.com/diku-dk/sml-server
github.com/diku-dk/sml-setmap
github.com/diku-dk/sml-sort
github.com/diku-dk/sml-sha256
github.com/diku-dk/sml-sobol
github.com/diku-dk/sml-unicode
github.com/diku-dk/sml-uref
- github.com/pzel/sml-either
- github.com/shwestrick/sml-audio
- github.com/shwestrick/sml-uri
- github.com/shwestrick/sml-parseq
github.com/melsman/mlkit-postgresql
github.com/melsman/mlkit-ssl-socket
github.com/diku-dk/sml-tigr
See this blog post on the design of the Futhark package manager.
To compile the package manager, you need a Standard ML compiler such as MLton or MLKit.
$ brew install mlkit
$ make all
$ MLCOMP=mlton make clean all
This software is distributed under the MIT LICENSE.
The package manager is almost a complete port of the Futhark package manager, designed, and implemented in Haskell by Troels Henriksen.