-*- mode: outline; coding: utf-8 -*- * Changes in version 1.5 ** (weinholt net otr): Support for OTR version 3 This release supports Off-the-Record Messaging Protocol version 3. This new version of the protocol uses instance tags, which are used to distinguish between different OTR sessions. This fixes a problem with chat networks that allow multiple logins. The new version also defines an extra symmetrical key that can be used by out-of-band protocols. * Changes in version 1.4 ** New license terms Previous versions of Industria were licensed under the GNU GPL v3 or later. Starting with this release Industria is instead available under the MIT license. See LICENSE.txt for details. ** Library versioning will be removed The library files in Industria have until now been using the library versioning feature of R6RS. This feature has not received the kind of support that I hoped for and is causing problems. The next version of Industria will not have version numbers. If your import statements look like this: (import (weinholt disassembler i8080 (1 (>= 0))) ...) Then you need to change them to look like this: (import (weinholt disassembler i8080) ...) ** (weinholt disassembler x86): jnle was misinterpreted as XOP * Changes in version 1.3 ** (weinholt crypto crc): Pre-defined the crc-64/ecma polynomial ** (weinholt disassembler x86): Support for most AMD XOP instructions ** (weinholt compression xz): New decompressor for XZ data This is a new library that implements a custom binary input port for reading XZ compressed data. This is a container format for the LZMA2 compression algorithm and it is becoming popular as a replacement for gzip and bzip2. Filters are not yet supported. * Changes in version 1.2 ** (weinholt binfmt elf): Parser for ELF binaries This library provides parsers for various structures in ELF binaries. It also exports many standard constants. The libraries were included in previous releases, but had been undocumented. This release improves the interface and includes documentation. ** (weinholt crypto ec): New library for elliptic curve cryptography This new library implements basic elliptic curve cryptography over finite prime fields. It exports mathematical operators, some standard curves, and procedures for bytevector conversion of points. ** (weinholt crypto ec dsa): New library for elliptic curve DSA This library is similar to (weinholt crypto dsa), except it works with elliptic curves. ECDSA signatures can be generated and verified. ** (weinholt crypto rsa): Private key operations Private RSA key operations have been implemented. See the manual for more details. ** (weinholt crypto ssh-public-key): Support for ECDSA keys Support has been added for elliptic curve DSA keys. The new procedure ssh-public-key-algorithm returns the SSH algorithm identifier of a key. ** (weinholt net ssh): New library for the Secure Shell protocol This library implements the Secure Shell protocol. This is a protocol widely used in the Internet as a secure replacement for telnet and some other services. Both servers and clients can be implemented using this library. It's not yet known if the provided interface is suitable for interactive applications. ** (weinholt net tcp): Very simple TCP client library This library provides the tcp-connect procedure, which simply opens a TCP connection to a host and service. This requires implementation- specific code, so the author is not eager to provide more than the bare minimum. Code has been provided for most R6RS implementations. ** (weinholt struct pack): Fix infinite loop in a special case When `pack!' can't determine field offsets at expansion time and it needs to make sure the padding between two fields is set to zero, it will residualize a call to the private procedure `bytevector-zero!'. This procedure had a bug that caused it to never terminate if the start and end indices differed. ** (weinholt text internet): Internet address parsing and formatting This new library provides procedures for converting between string and bytevector representations of IPv4 and IPv6 addresses. The IPv6 address text representation is the one recommended by RFC 5952. * Changes in version 1.1 ** (weinholt bytevectors): Added bytevector=?/constant-time The procedure bytevector=?/constant-time compares two bytevectors by summing up their differences. ** (weinholt crypto blowfish): New procedures for CBC mode The procedures blowfish-cbc-encrypt! and blowfish-cbc-decrypt! were added. ** (weinholt crypto dh): New library for Diffie-Hellman key exchange This code was previously spread out in different libraries. The library exports make-dh-secret, expt-mod and a few MODP groups. ** (weinholt crypto dsa): Better secret numbers for signatures The per-message secret number used by dsa-create-signature is now generated more in accordance with FIPS 186-3 Appendix B.2.1. ** (weinholt crypto md5): Added md5-96 and equality predicates Added md5-length, md5-96-copy-hash!, md5-hash=? and md5-96-hash=?. The -96 procedures work with the leftmost 96 bits of a hash. The equality predicate compares an md5 state with a bytevector in a manner intended to not leak timing information about the comparison. ** (weinholt crypto openpgp): New exports Added port-ascii-armormed? which checks if the data on a binary input port looks like a binary OpenPGP packet or not. The procedure get-openpgp-packet was added to the exports. ** (weinholt crypto sha-1): Added sha-1-96 and equality predicates Same changes as the md5 library. ** (weinholt crypto sha-2): Equality predicates and HMAC bug fix Same changes as the md5 library except that the -96 procedures are -128 here. There are also bug fixes: the procedures hmac-sha-384 and hmac-sha-512 were previously defined using an incorrect block size. This change makes the output incompatible with previous versions, so the major version was incremented to 1. Another bug fixed was that the hmac procedures couldn't handle key lengths larger than the block size. ** (weinholt disassembler i8080): New disassembler for Intel 8080 This is a new disassembler for Intel 8080/8085, which was the predecessor of the Intel 8086. ** (weinholt disassembler x86): Limit get-instruction to 15 bytes Instructions on the x86 can at most be 15 bytes long. Previously this limit was not enforced by get-instruction. Overlong instructions now raise &invalid-opcode as expected.