Collection of Utilities for Gerbil Scheme
  • Scheme 98.9%
  • Shell 0.7%
  • Nix 0.4%
Find a file
2025-09-19 03:06:33 -04:00
net Update for Gerbil v0.18.1-108-gcb219ef6 2024-04-21 18:17:57 +00:00
pure Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
scripts make-docker-image: mukn/all instead of mukn/glow 2025-09-05 20:07:55 -04:00
t Moved some json tests to gerbil upstream 2025-09-05 20:03:40 -04:00
.gitignore Ignore manifest.ss 2023-11-07 15:02:46 -05:00
assert.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
astar.ss astar: from one end or from both 2024-01-19 19:15:54 -05:00
autocurry.ss More tweaks to autocurry 2023-11-08 03:51:08 -05:00
base.ss Update for v0.18.1-32-g551d21b0 2024-02-18 19:05:34 -05:00
build.ss Update for Gerbil v0.18.1-72-gb280d037 2024-03-20 13:02:22 -04:00
building.ss Update for Gerbil v0.18.1-72-gb280d037 2024-03-20 13:02:22 -04:00
bytes.ss Update for Gerbil 0.17.0-298-g01d7a9ee 2023-09-25 21:30:55 -04:00
bytestring.ss Update for Gerbil v0.18.1-108-gcb219ef6 2024-04-21 18:17:57 +00:00
call-limiter.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
cli.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
concurrency.ss Update for Gerbil v0.18.1-108-gcb219ef6 2024-04-21 18:17:57 +00:00
config.ss config: XDG_STATE_HOME 2024-07-01 23:39:53 -04:00
COPYING Import Gerbil utils from my work project 2018-01-08 23:36:45 -05:00
debug.ss Update for Gerbil v0.18.1 2023-12-14 13:21:15 -05:00
default.nix Build improvements for nix 2020-11-30 00:09:54 -05:00
diceware.ss Update for Gerbil v0.18.1-108-gcb219ef6 2024-04-21 18:17:57 +00:00
error.ss Cleanups 2023-10-21 16:14:34 -04:00
exception.ss Update for Gerbil v0.18.1-65-g0db82569 2024-03-13 11:50:47 -04:00
failure.ss Make failure cuter 2023-10-17 03:12:34 -04:00
ffi.ss Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
files.ss Introduce write-u8vector* read-u8vector* 2024-04-27 15:19:40 -04:00
filesystem.ss Fix small bugs 2024-07-22 20:31:31 +02:00
generator.ss Update for Gerbil v0.18.1 2023-12-14 13:21:15 -05:00
gerbil-nix-env.sh Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
gerbil.pkg v0.2: rename package from :utils to :clan 2020-07-14 18:25:51 -04:00
git-fu.ss Fix small bugs 2024-07-22 20:31:31 +02:00
hash.ss Small fixes 2022-06-04 18:01:57 -04:00
io.ss Introduce write-u8vector* read-u8vector* 2024-04-27 15:19:40 -04:00
json.ss json: use parameters for Gerbil v0.18.1-110-g1cc1d0b3 2024-04-27 15:22:38 -04:00
list.ss Getting ready for Gerbil v0.18 2023-09-18 10:37:04 -04:00
logger.ss Don't use _ in lambda anymore 2024-04-12 22:25:03 -04:00
matrix.ss Update for Gerbil v0.18-40-g367f9a56 2023-12-04 02:01:14 -05:00
maybe.ss Comments on Option, OptionList, Maybe 2023-10-17 12:18:56 -04:00
memo.ss Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
nix-fu.ss Getting ready for Gerbil v0.18 2023-09-18 10:37:04 -04:00
option.ss Comments on Option, OptionList, Maybe 2023-10-17 12:18:56 -04:00
order.ss Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
orfalse.ss Add orfalse as a variant of maybe 2023-05-18 12:24:59 -04:00
otp.ss manual use of otp 2025-09-19 03:06:33 -04:00
path-config.ss Update for Gerbil 0.17.0-298-g01d7a9ee 2023-09-25 21:30:55 -04:00
peekable-iterator.ss Update for Gerbil v0.18.1-72-gb280d037 2024-03-20 13:02:22 -04:00
ports.ss Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
pred.ss Some git-fu and dependencies 2020-12-13 00:17:28 -05:00
private-data.ss Update for Gerbil v0.18.1-72-gb280d037 2024-03-20 13:02:22 -04:00
random.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
README.md Update README, in particular wrt tests 2023-01-16 12:30:27 -05:00
rescript.ss rescript: allow pass-through. Add bold, italic. 2025-09-05 20:04:41 -04:00
roman.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
rpm-versioning.ss Getting ready for Gerbil v0.18 2023-09-18 10:37:04 -04:00
scribble.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
shell.ss Update for Gerbil v0.18-rc1-8-g32b454c9 2023-10-07 12:37:34 -04:00
simple-actor-client.ss Getting ready for Gerbil v0.18 2023-09-18 10:37:04 -04:00
source.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
stateful-avl-map.ss Getting ready for Gerbil v0.18 2023-09-18 10:37:04 -04:00
string.ss Work with Gerbil v0.18-35-g137852c7 2023-11-29 00:54:28 -05:00
subtitles.ss Update for Gerbil v0.18-40-g367f9a56 2023-12-04 02:01:14 -05:00
syntax.ss Update for Gerbil v0.18.1-65-g0db82569 2024-03-13 11:50:47 -04:00
temporary-files.ss Update for Gerbil 0.17.0-282-geb2f4eb4 2023-09-22 12:23:39 -04:00
testing.ss Add src at the *end* of the load-path 2024-04-05 13:27:04 -04:00
timestamp.ss Update for Gerbil v0.18-40-g367f9a56 2023-12-04 02:01:14 -05:00
TODO.md Get ready for Gerbil post #562. 2020-07-31 23:50:15 -04:00
unit-tests.ss Some git-fu and dependencies 2020-12-13 00:17:28 -05:00
versioning.ss Comment out %version command 2024-07-30 18:52:44 -04:00
watch.ss Update for Gerbil v0.18-40-g367f9a56 2023-12-04 02:01:14 -05:00

Gerbil Clan

A collection of utilities for Gerbil Scheme. This collection homesteads the toplevel name clan in the global package namespace. It is intended to host utilities that, if and when complete, well-designed and well-documented, are headed for the std/ hierarchy of standard libraries, but are not there yet (and for some of them may never be). Maintenance of the utilities is collegial, with fare as current lead maintainer. All are welcome to join the effort, as long as they are ready to uphold high standards of quality as they collaborate on the joint code base; and even those who do not have the time and dedication to be maintainers can contribute code, documentation, and suggestions.

Using

You can install using the Gerbil package manager:

gxpkg install github.com/fare/gerbil-utils

Alternatively, you can clone the repo and build the utils using the build script:

$ git clone https://github.com/fare/gerbil-utils.git
$ cd gerbil-utils
$ gxpkg link github.com/fare/gerbil-utils $PWD
$ ./build.ss

If you are using NixOS or nixpkgs, see also the file gerbil-nix-env.sh for interactive development of Gerbil software.

Contributing

Contribution by all Gerbil hackers is welcome, as the current curator though, I may insist that all code should follow a style and naming conventions that are consistent with the existing body of code, or at least with themselves (which weaker requirement only applies for code that doesn't interact strongly with the rest of the codebase).

Compatibility

The APIs of functions in this collection should not be considered stable unless otherwise noted; still, efforts are being made to not gratuitously introduce backward incompatibility. When the APIs are stable, the functions and macros will be moved to the standard library, under the prefix std/ instead of clan/ --- though slightly different style standards may apply there, as vyzo is the curator and may have different tastes.

That said, current version of gerbil-utils requires Gerbil v0.17 or later to work.

Testing

Here are the coding conventions for the tests in projects that use clan/testing:

  • All test files are under the t/ subdirectory, with a name generally the same as the file being tested, e.g. foo-test.ss to test the functionality in foo.ss.
  • A test file name ends in -test.ss for unit-tests, or -integrationtest.ss for integration tests.
  • A test file defines a single test-suite with the same name as the file, e.g. t/foo-test.ss has (def foo-test (test-suite "testing foo" (test-case "test case 1" ...) ...))
  • A unit-test is a test that can run without any external service (e.g. geth)
  • An integrationtest is a test that requires some external services to run against (e.g. geth)
  • if there are dependencies between tests, number them in a total order that extends the dependency partial order, so we don't spend time debugging something that depends on something else that already failed. e.g. 20-bar-integrationtest.ss may depend on helpers or service connections defined in 10-foo-integrationtest.ss.
  • Your project can use the same convention by defining a file unit-tests.ss similar to that in this directory.
  • See gerbil-ethereum for a more elaborate example of a project using this test infrastructure.