A partial Scheme port of GNUnet client libraries. Will be renamed to gnunet-guile once it has sufficient functionality. Git repo moved to https://git.gnunet.org/gnunet-scheme.git/. Not sure if Mantis will be used.
Maxime Devos e15476aebf mq-impl/stream: Add modules and tests to 'Makefile.am'. | %!s(int64=3) %!d(string=hai) anos | |
---|---|---|
.reuse | %!s(int64=4) %!d(string=hai) anos | |
LICENSES | %!s(int64=4) %!d(string=hai) anos | |
build-aux | %!s(int64=4) %!d(string=hai) anos | |
doc | %!s(int64=4) %!d(string=hai) anos | |
gnu | %!s(int64=3) %!d(string=hai) anos | |
tests | %!s(int64=3) %!d(string=hai) anos | |
.gitignore | %!s(int64=4) %!d(string=hai) anos | |
.mailmap | %!s(int64=4) %!d(string=hai) anos | |
Makefile.am | %!s(int64=3) %!d(string=hai) anos | |
README.org | %!s(int64=3) %!d(string=hai) anos | |
ROADMAP.org | %!s(int64=3) %!d(string=hai) anos | |
configure.ac | %!s(int64=4) %!d(string=hai) anos | |
guix.scm | %!s(int64=3) %!d(string=hai) anos |
TODO: ask upstream of use of name is acceptable TODO: more bindings, less duplication TODO: document directory & meta data format #+BEGIN_SRC shell # When using Guix # (XXX make dependency on Guix itself optional) guix environment -l guix.scm
autoreconf -vif ./configure make make check #+END_SRC TODO install TODO: test suite for download & publish. TODO (elsewhere): GNUnet service definitions for Guix in container
(Script: gnu/gnunet/scripts/publish-store.scm) (Described in ROADMAP.org)
We cheat by calling the gnunet-publish binary. Use this to publish a directory from the store! (Script: gnu/gnunet/scripts/download-store.scm) (Described in ROADMAP.org)
Message queues have a handler for normal incoming messages and for errors. If a transport receives an incoming message, it should add it (‘inject’) to the incoming messages, which may result in a message handler being called. The user of the queue can also try to cancel sending a message and will receive a notification when the message cannot be unsent anymore.
Message queues can be used concurrently. (TODO destruction)
Message queue implementations based on streams I/O can use (gnu gnunet utils tokeniser), to split the message stream into separate messages.
Not all errors indicate something is wrong.
The message size in the header was smaller than the minimal message size.
TODO: modifying, update notifications, loading ... Features:
The former is preferred as offsets and sizes etc. are inlined
TODO: IP_PKTINFO for interface address, scope ... TODO: message queue based upon this TODO: nice abstraction for network errors Modules are expected to use ‘fibers’ for concurrency.
They should not introduce any ambient authority, and avoid implicit use of pre-existing ambient authority (e.g. current-output-port, the current persona).
To avoid accidental reuse of capabilities accross modules, do not call callbacks where it can be avoided. Consider conditions for signalling an event occurred instead. Add a little information to ‘* Modules’. Options like ‘priority’, ‘anonymity’, ‘replication’ and ‘no-index’ should be ‘passed’ using SRFI-39 parameters, and not with positional or keyword arguments, as they are just passed through unchanged most of the time. Read --> How SQLite Is Tested (accessed: 2021)
This GNUnet implementation isn't quite that well-tested, and most likely won't be for the foreseeable future. However, when defining new code, try to define the following kind of tests where reasonable (non-exhaustive);
Bytevectors are often duplicated to preserve safety in presence of buggy / insecure / hostile code in a sandbox. See the LICENSES directory for license text, and each file with source code for the license and copyright text. Most code is under the Affero General Public License (v3 or later), see each source file for details. Maintainer: Maxime Devos . PGP fingerprint: C1F3 3EE2 0C52 8FDB 7DD7 011F 49E3 EE22 1917 25EE. Patches may be sent as formatted by `git format-patch`. E-mail messages should ideally by be signed with PGP (or GnuPG, etc.).
Presuming I'm using the word ‘notoriously’ correctly, announcements by the maintainer of ‘taking a break’ from Guix+GNUnet hacking are notoriously unreliable. I suggest you disregard them (but note that sometimes these are actually true).