# -*- mode: org; coding: utf-8 -*- # Copyright (C) 2021--2023 GNUnet e.V. # SPDX-License-Identifier: FSFAP # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. * Changes since 0.3 ** New functionality - New tools for writing services -- see ‘Writing service communication code’ in the manual. These tools have been used to reduce duplication between client code of different services, so tests targeting a single service automatically also test the other services a bit. - New macro 'analyse', 'construct' and 'define-analyser', to make using read%, select% and 'set%', less tedious when the type and slice remains the same. Also, by using the new macros, the code base should now be a bit more readible. - New 'slice-contents-equal?' procedure. ** Bugfixes - A potential (but unverified) bug with automatic collection is fixed -- previously, if DHT garbage was found multiple times within a single reconnection, it might only be found once. Due to the new unification of service code, the same fix automatically applies to all other services. ** Documentation - For 'make-disconnect!', only a single argument was mentioned in the manual, but there were actually two (non-optional!) arguments. This has been rectified. - Bytevector slices ((gnu gnunet utils bv-slice)) are now documented in the manual, in the chapter ‘Bytevector slices’, albeit not completely. ** API changes - The DHT API now uses objects from (gnu gnunet hashcode) instead of raw /hashcode:512 bytevector slices, for consistency with the not-yet-written FS API. The (gnu gnunet hashcode) module has been tweaked to fit the conventions. * Changes since 0.2 ** New functionality - New tools for writing services -- have a look at ‘Writing service communication code’ and ‘Testing service code’ in the manual for various procedures for writing service code and testing it. - There is some initial support for CADET in (gnu gnunet cadet client), documented in the manual. However, it is incomplete and reconnection is completely untested. - DHT searches can now be stopped (‘cancelled’) with 'stop-get!'. Additionally, DHT searches are automatically cancelled when the search object becomes unreachable. - DHT and NSE server objects are automatically disconnected when they become unreachable. - The new module (gnu gnunet concurrency lost-and-found) can detect if an object became garbage-collectable, interacting with guile-fibers. - (gnu gnunet utils bv-slice) has been extended. ** API changes - (gnu gnunet data-string) now signals bogus input with exceptions instead of returning #false. - (gnu gnunet utils hat-let) is now more flexible in recognising _ -- it is now irrelevant whether _ has been imported (from (rnrs base)) or not. ** Bug fixes - Negative floating point numbers are now recognised by the configuration parser. - Envelopes now have a 'envelope-peek-irrevocably-sent?' procedure for testing if it has been sent. ** Internals - (gnu gnunet data-string) has been modified to not mutate any variables. - The tests in tests/mq-stream are now more sensitive. - Documentation has been split in several files. - The configure script tests if the required Guile libraries are available. ** Documentation - The ‘message-symbol’ network structure property is now defined for DHT messages and documented in the manual. The aim is to make the code a little more self-documenting and understandable. - Likewise, a new ‘c-type’ property has been defined, making cross-referencing between Scheme and C sources simpler. - ‘send-message!’ and ‘priority-preferences’ are documented. * Changes since 0.1 ** Features - A DHT client! (gnu gnunet dht client), documented in the manual - More specific exceptions in (gnu gnunet utils bv-slice) -- an &missing-capabilities exception is now raised instead of an &assertion when appropriate. ** Bug fixes and other ‘non-user facing’ changes - The NSE client now accepts NaN as standard deviation instead of printing an error message. Sometimes the NSE service sends NaN as standard deviation, see . - The bytes in a slice are only printed when the slice is readable, so unreadability of slices cannot be circumvented with object->string anymore. - Bytevector slice manipulating code now raises &missing-capabilities conditions instead of &assertion when appropriate.