Soundness is an ecosystem of libraries for writing direct-style code with Scala 3, in a number of broad domains:
cli, for building commandline applicationsdata, for working with data in various formssci, for scientific and mathematical operationstest, for testingtool, for building developer toolsweb, for developing web applications
The Soundness website includes more details about developing software using Soundness, and should be the primary source of documentation about Soundness for users.
Soundness is composed of over one hundred modules. Each module has its own
unique name and purpose, and may be used alone (with its dependencies) or in
combination with other modules in the ecosystem. Most modules have a core
component, but many have additional components for optional functionality.
Bundles of modules for the six domains above are also provided.
Releases are published on Maven Central, and can be specified as follows:
-
To include a bundle of modules, use
dev.soundness:soundness-<bundle>:<version>where<bundle>iscli,data,sci,test,toolorweb, for example,dev.soundness:soundness-sci:0.48.0. -
To include one specific module, use
dev.soundness:<module>-<component>:<version>, where<module>is one of the modules from the lib directory, and<component>is typicallycore, but may be something else for modules with optional components, for exampledev.soundness:rudiments-core:0.48.0ordev.soundness:punctuation-html:0.48.0. -
To include everything in Soundness, use
dev.soundness:soundness-all:<version>.
Version numbers are synchronized across all modules, and the latest release version is shown at the top of this page. Binary compatibility is not guaranteed between modules with different version numbers.
New versions of Soundness are usually released weekly.
Soundness is currently built using Mill, with GNU Make providing some convenient shortcuts.
make testwill compile everything and run the full test suitemake test.<module>will compile and run the tests for the module<module>make devwill compile all source files continuously, watching for changesmake publishLocalwill publish a version of Soundness locally
Soundness requires Scala 3.7. Java 17 should be assumed as a minimum requirement for most modules, however Mandible (which uses the new classfile API) requires Java 24 or later.