Initial versioned release (v0.2.0) (#240)

* Initial versioned release (v0.2.0)

Introduce a new versioning strategy for stew, now that nimble has become
more competent at dealing with versions.

* clarify lowest version
This commit is contained in:
Jacek Sieka 2024-12-04 10:35:57 +01:00 committed by GitHub
parent a6e1981320
commit 79e4fa5a9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 6 deletions

View File

@ -20,17 +20,20 @@ broken out into separate repositories.
Libraries are documented either in-module or on a separate README in their
respective folders
- `arraybuf` - `array`-based fixed-capacity dynamic-length buffer
- `arrayops` - small helpers and operations on `array`/`openArray`
- `assign2` - fast assignments (unlike the `=` operator in nim which is very slow)
- `bitops2` - an updated version of `bitops.nim`, filling in gaps in original code
- `byteutils` - utilities that make working with the Nim `byte` type convenient
- `endians2` - utilities for converting to and from little / big endian integers
- `io2` - I/O without exceptions
- `leb128` - utilities for working with LEB128-based formats (such as the varint style found in protobuf)
- `objects` - get an object's base type at runtime, as a string
- `ptrops` - pointer arithmetic utilities
- `result` - moved to [nim-results](https://github.com/arnetheduck/nim-results/)
- `shims` - backports of nim `devel` code to the stable version that Status is using
- `sequtils2` - extensions to the `sequtils` module for working conveniently with `seq`
- `staticfor` - compile-time loop unrolling
## Layout
@ -77,10 +80,31 @@ else
## Using stew in your project
We do not recommend using this library as a normal `nimble` dependency - there
are no versioned releases and we will not maintain API/ABI stability. Instead,
make sure you pin your dependency to a specific git hash (for example using a
submodule) or copy the file to your project instead.
`stew`, due to its experimental nature, does **not** have a stable API/ABI and
features may be changed or removed. Releases are done on a case-by-case basis
for when some specific project needs them - open an issue if you need one!
When making a release, we will strive to update the `minor` version whenever a
major component is removed or changed and the `patch` version if changes are
mostly additive, but due to the nature of the library being a collection of
smaller libraries, these guidelines may be streched at times.
It is not expected that the library will reach a `1.0` release. Instead, mature
code will be [graduated](https://github.com/status-im/nim-stew/commit/2cf408b9609fc3e6c238ddbd90ab31802e650212)
into independent libraries that can follow a regular release schedule.
* libraries that depend on `stew` should specify the lowest possible required
version (`stew >= 0.2`) that contain the necessary features that they use -
this may be lower than latest released version. An upper bound
(`stew >= 0.2 & <0.3`) or caret versions (`stew ^0.2`) may be used but it is
not recommended since this will make your library harder to compose with other
libraries that depend on `stew`.
* applications that depend on stew directly or indirectly should specify a
commit ( `stew#abc...`) or a specific version (`stew == 0.2.3`) - this ensures
the application will continue to work irrespective of stew updates
* alternatively, you can just copy the relevant files of stew into your project
or use a submodule - this approach maximises composability since each consumer
of stew no longer has to restrict the specific version for other consumers
Typically, you will import either a top-level library or drill down into its
submodules:
@ -89,7 +113,7 @@ import stew/bitops2
import stew/ranges/bitranges
```
:warning: No API/ABI stability - pick a commit and stick with it :warning:
:warning: No API/ABI stability - in applications, pick a commit and stick with it :warning:
## Contributing to stew

View File

@ -1,7 +1,7 @@
mode = ScriptMode.Verbose
packageName = "stew"
version = "0.1.0"
version = "0.2.0"
author = "Status Research & Development GmbH"
description = "Backports, standard library candidates and small utilities that don't yet deserve their own repository"
license = "MIT or Apache License 2.0"