base
Package info
-
Homepage
gitlab.com/clean-and-itasks/base/base -
Latest version
3.0.0, 10 months ago -
Maintainer
Camil Staps -
License
BSD-2-Clause
Description
The Clean base, a metapackage for the compiler, code generator, run time system, and standard libraries.
Readme
base
This is the repository of base
, a metapackage containing the bare minimum to
create Clean applications.
It contains:
base-clm
base-code-generator
base-compiler
base-lib
base-linker
(Windows only)base-rts
base-stdenv
Versioning in base
These are some notes on how base
and its subpackages are versioned.
base
uses semantic versioning from the Clean programmer’s perspective. This
is somewhat tricky for a metapackage:
- A major update indicates backwards incompatible changes. This typically means that code that previously worked may not work any more, i.e., that there is a backwards incompatible change in syntax.
- The patch version is updated when the dependencies must be updated but do not contain user-facing backwards incompatible changes.
base
has dependencies with^
constraints (the first non-zero version part must remain the same). Concretely this means that ifbase
1.1.0 depends onbase-compiler: ^2.0
, the same version ofbase
may use different versions of the compiler, which may have different features (if they were added in different minor versions ofbase-compiler
).- For this reason, there are no minor updates of
base
for most new features. If you depend on certain new features, add an extra dependency to your project, e.g.base: ^1.0
andbase-compiler: >=2.2
. We do not have a real use for minor updates ofbase
itself. - When a new feature is backwards compatible but significantly restricts the
allowed dependencies, a minor update of
base
can be useful. This was done for 2.1, which added{ :}
array support. This feature required the latest versions of variousbase-*
packages. Using a minor release allows future changes to be backported onto 2.0.x if needed.
The underlying packages use semantic versioning from the build tool’s
perspective. For instance, the base-compiler
major version number is updated
when ABC code changes in a backwards-incompatible manner (e.g., added or
changed instructions, but not removed instructions). The minor version would be
updated for new syntax; the patch version for bug fixes and performance
improvements.
Example: adding a new ABC instruction
- The code generator needs a minor update to support the new instruction. This is minor because it adds functionality in a backwards-compatible manner; all previously valid ABC code will remain valid.
- The compiler needs a major update to add the instruction. This is major because it changes the (implicit) ABC specification in a backwards-incompatible manner; projects like the ABC interpreter depend on this.
base
itself needs a patch update to allow the new compiler version. This version should also specify the earliest code generator version which can be used with the new compiler. Forbase
, this is just a patch update (and not minor/major), because from the programmer’s perspective nothing has changed.
Maintainer
This project is maintained by Camil Staps.
Changelog
Changelog
v3.0.0
- Feature: add specifying types for expressions with syntax:
(expr :: type)
, uniqueness attribute equalities or type contexts are not allowed. The specified type may be more general, uniqueness attributes that are required because of propagation are not added by the compiler, so for example[*Int]
should be*[*Int]
. - Change: only import generic cases/derives that are imported by an explicit import or import of the whole module, instead of importing all generic cases/derives in all (partially) imported definition modules.
- Enhancement: several enhancements/bug fixes due to updating to
base-compiler
v4.
v2.1.0
- Feature: add support for
{ :}
array types. - Enhancement: several enhancements due to updating to
base-compiler
v3.
v2.0
- Change: include
base-lib
package which has many name conflicts withclean-platform
and cannot be used together.
v1.0.1
- Enhancement: reduce memory usage of unboxed arrays of basic types.
v1.0
First tagged version.
Versions
-
3.0.0 latest 10 months ago
Dependencies: base-clm ^1.1.4; base-code-generator ^2.2.0; base-compiler ^4.0.0; base-lib ^2.0.0; base-rts ^3.0.0; base-stdenv ^2.1.0.
Targets: linux-x64; linux-x86; windows-x64 (depends on base-linker ^1.0.0).
-
2.1.0 latest 2.1 1 year, 7 months ago
Dependencies: base-clm ^1.1.4; base-code-generator ^2.2.0; base-compiler ^3.0.0; base-lib ^2.0.0; base-rts ^3.0.0; base-stdenv ^2.1.0.
Targets: linux-x64; linux-x86; windows-x64 (depends on base-linker ^1.0.0).
-
2.0.0 latest 2.0 1 year, 10 months ago
Dependencies: base-clm ^1.1.4; base-code-generator ^2.0.0; base-compiler ^1.0.0 || ^2.0.0; base-lib ^2.0.0; base-rts ^2.0.0; base-stdenv ^2.0.0.
Targets: linux-x64; linux-x86; windows-x64 (depends on base-linker ^1.0.0).
-
1.0.1 latest 1.0 2 years ago
Dependencies: base-clm ^1.1.4; base-code-generator ^2.0.0; base-compiler ^1.0.0 || ^2.0.0; base-rts ^2.0.0; base-stdenv ^2.0.0.
Targets: linux-x64; linux-x86; windows-x64 (depends on base-linker ^1.0.0).
-
1.0.0 2 years ago
Dependencies: base-clm ^1.1.4; base-code-generator ^1.0.0; base-compiler ^1.0.0 || ^2.0.0; base-rts ^1.0.0; base-stdenv ^1.0.0.
Targets: linux-x64; linux-x86; windows-x64 (depends on base-linker ^1.0.0).