diff --git a/readme.md b/readme.md index e2faa2a..f6e8503 100644 --- a/readme.md +++ b/readme.md @@ -18,9 +18,17 @@ could be considered an enhanced "predef". - a typesafe `str""` string interpolator where all substitutions must be `String`s -## Availability +## Availability Plan -Rudiments has not yet been published as a binary. +Rudiments has not yet been published. The medium-term plan is to build Rudiments +with [Fury](/propensive/fury) and to publish it as a source build on +[Vent](/propensive/vent). This will enable ordinary users to write and build +software which depends on Rudiments. + +Subsequently, Rudiments will also be made available as a binary in the Maven +Central repository. This will enable users of other build tools to use it. + +For the overeager, curious and impatient, see [building](#building). ## Getting Started @@ -122,6 +130,7 @@ is applied to. This can be useful in a subsequent `map` operation. + ## Status Rudiments is classified as __fledgling__. For reference, Scala One projects are @@ -133,26 +142,62 @@ categorized into one of the following five stability levels: - _dependable_: production-ready, subject to controlled ongoing maintenance and enhancement; tagged as version `1.0.0` or later - _adamantine_: proven, reliable and production-ready, with no further breaking changes ever anticipated -Projects at any stability level, even _embryonic_ projects, are still ready to -be used, but caution should be taken if there is a mismatch between the -project's stability level and the importance of your own project. +Projects at any stability level, even _embryonic_ projects, can still be used, +as long as caution is taken to avoid a mismatch between the project's stability +level and the required stability and maintainability of your own project. Rudiments is designed to be _small_. Its entire source code currently consists of 1020 lines of code. ## Building -Rudiments can be built on Linux or Mac OS with [Fury](/propensive/fury), however -the approach to building is currently in a state of flux, and is likely to -change. +Rudiments will ultimately be built by Fury, when it is published. In the +meantime, two possibilities are offered, however they are acknowledged to be +fragile, inadequately tested, and unsuitable for anything more than +experimentation. They are provided only for the necessity of providing _some_ +answer to the question, "how can I try Rudiments?". + +1. *Copy the sources into your own project* + + Read the `fury` file in the repository root to understand Rudiments's build + structure, dependencies and source location; the file format should be short + and quite intuitive. Copy the sources into a source directory in your own + project, then repeat (recursively) for each of the dependencies. + + The sources are compiled against the latest nightly release of Scala 3. + There should be no problem to compile the project together with all of its + dependencies in a single compilation. + +2. *Build with [Wrath](https://github.com/propensive/wrath/)* + + Wrath is a bootstrapping script for building Rudiments and other projects in + the absence of a fully-featured build tool. It is designed to read the `fury` + file in the project directory, and produce a collection of JAR files which can + be added to a classpath, by compiling the project and all of its dependencies, + including the Scala compiler itself. + + Download the latest version of + [`wrath`](https://github.com/propensive/wrath/releases/latest), make it + executable, and add it to your path, for example by copying it to + `/usr/local/bin/`. + + Clone this repository inside an empty directory, so that the build can + safely make clones of repositories it depends on as _peers_ of `rudiments`. + Run `wrath -F` in the repository root. This will download and compile the + latest version of Scala, as well as all of Rudiments's dependencies. + + If the build was successful, the compiled JAR files can be found in the + `.wrath/dist` directory. ## Contributing -Contributors to Rudiments are welcome and encouraged. New contributors may like to look for issues marked -beginner. +Contributors to Rudiments are welcome and encouraged. New contributors may like +to look for issues marked +[beginner](https://github.com/propensive/rudiments/labels/beginner). -We suggest that all contributors read the [Contributing Guide](/contributing.md) to make the process of -contributing to Rudiments easier. +We suggest that all contributors read the [Contributing +Guide](/contributing.md) to make the process of contributing to Rudiments +easier. Please __do not__ contact project maintainers privately with questions unless there is a good reason to keep them private. While it can be tempting to @@ -161,8 +206,9 @@ audience, and it can result in duplication of effort. ## Author -Rudiments was designed and developed by Jon Pretty, and commercial support and training is available from -[Propensive OÜ](https://propensive.com/). +Rudiments was designed and developed by Jon Pretty, and commercial support and +training on all aspects of Scala 3 is available from [Propensive +OÜ](https://propensive.com/). @@ -170,14 +216,16 @@ Rudiments was designed and developed by Jon Pretty, and commercial support and t The word _rudiment_ is defined as, "the principle which lies at the bottom of any development; an unfinished beginning", which is apt for a library whose purpose is to provide such common functionality that it might lie at the start of many other libraries. -In general, Scala One project names are always chosen with some rationale, however it is usually -frivolous. Each name is chosen for more for its _uniqueness_ and _intrigue_ than its concision or -catchiness, and there is no bias towards names with positive or "nice" meanings—since many of the -libraries perform some quite unpleasant tasks. +In general, Scala One project names are always chosen with some rationale, +however it is usually frivolous. Each name is chosen for more for its +_uniqueness_ and _intrigue_ than its concision or catchiness, and there is no +bias towards names with positive or "nice" meanings—since many of the libraries +perform some quite unpleasant tasks. -Names should be English words, though many are obscure or archaic, and it should be noted how -willingly English adopts foreign words. Names are generally of Greek or Latin origin, and have -often arrived in English via a romance language. +Names should be English words, though many are obscure or archaic, and it +should be noted how willingly English adopts foreign words. Names are generally +of Greek or Latin origin, and have often arrived in English via a romance +language. ## Logo @@ -185,5 +233,6 @@ The logo shows a burning sun, the basis for life in our solar system; it represe ## License -Rudiments is copyright © 2023 Jon Pretty & Propensive OÜ, and is made available under the -[Apache 2.0 License](/license.md). +Rudiments is copyright © 2024 Jon Pretty & Propensive OÜ, and +is made available under the [Apache 2.0 License](/license.md). + diff --git a/src/core/bin.scala b/src/core/bin.scala index 08576ed..ac27018 100644 --- a/src/core/bin.scala +++ b/src/core/bin.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/bytes.scala b/src/core/bytes.scala index 68b1674..3819307 100644 --- a/src/core/bytes.scala +++ b/src/core/bytes.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/bytesize.scala b/src/core/bytesize.scala index 31eb1a4..7092e3a 100644 --- a/src/core/bytesize.scala +++ b/src/core/bytesize.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/collections.scala b/src/core/collections.scala index ebd8b7a..25df6be 100644 --- a/src/core/collections.scala +++ b/src/core/collections.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/conversions.scala b/src/core/conversions.scala index b666130..e46df73 100644 --- a/src/core/conversions.scala +++ b/src/core/conversions.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/exports.scala b/src/core/exports.scala index 48cfcce..bf49ea6 100644 --- a/src/core/exports.scala +++ b/src/core/exports.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/functor.scala b/src/core/functor.scala index 692a2f0..5f3d494 100644 --- a/src/core/functor.scala +++ b/src/core/functor.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/inequality.scala b/src/core/inequality.scala index 53045f3..3688c8c 100644 --- a/src/core/inequality.scala +++ b/src/core/inequality.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/pid.scala b/src/core/pid.scala index 46dfe94..66e7350 100644 --- a/src/core/pid.scala +++ b/src/core/pid.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/printable.scala b/src/core/printable.scala index 7e9a27d..96acea8 100644 --- a/src/core/printable.scala +++ b/src/core/printable.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/quickstart.scala b/src/core/quickstart.scala index 71b1f97..4ff5137 100644 --- a/src/core/quickstart.scala +++ b/src/core/quickstart.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/random.scala b/src/core/random.scala index 5e587f6..3e41210 100644 --- a/src/core/random.scala +++ b/src/core/random.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/rudiments.scala b/src/core/rudiments.scala index 1d4e280..15daeb3 100644 --- a/src/core/rudiments.scala +++ b/src/core/rudiments.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/working.scala b/src/core/working.scala index ed7ae1b..755f434 100644 --- a/src/core/working.scala +++ b/src/core/working.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/core/ycombinator.scala b/src/core/ycombinator.scala index 4c9b11e..1cc6251 100644 --- a/src/core/ycombinator.scala +++ b/src/core/ycombinator.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/ diff --git a/src/test/tests.scala b/src/test/tests.scala index 4ca7b64..23df4ef 100644 --- a/src/test/tests.scala +++ b/src/test/tests.scala @@ -1,5 +1,5 @@ /* - Rudiments, version [unreleased]. Copyright 2023 Jon Pretty, Propensive OÜ. + Rudiments, version [unreleased]. Copyright 2024 Jon Pretty, Propensive OÜ. The primary distribution site is: https://propensive.com/