Gimp/plug-ins/script-fu/libscriptfu/tinyscheme/README
bootchk d8e5d694d3 ScriptFu: TinyScheme: major revision and fix bugs string-port
Fix #11040 and #9495 bugs with unicode in string-ports

Fix other unreported bugs with allocations and garbage collection of string-ports.

Obsolete open-input-output-string, a string port of kind input-ouput is no longer supported
and the function actually opens a string-port of kind input which cannot be written.

Comments and Gimp style in the original TinyScheme code, now in string-port.c

Revise tests of string-port.

Update TinyScheme README: Discuss more thoroughly the ancestry, and changes from upstream.
2024-04-06 13:43:33 +00:00

54 lines
No EOL
1.4 KiB
Text

# About ScriptFu's TinyScheme
This version of TinyScheme has diverged from upstream.
Upstream is at SourceForge.
Occasionally fixes upstream are manually backported here.
## Changes
These are not upstream:
1. changes enabling wrapping by ScriptFu
2. i18n internationalization
3. unicode via UTF-8
4. byte type
5. string-port changes
## Build differences
This builds differently from upstream.
It might not build standalone anymore.
1. depends on GLib types, superficially
2. depends on external i18n support
3. some files have been extracted from the original scheme.c
4. depends on GLib for unicode support
## Unicode
This discussed implementation of unicode in this TinyScheme.
Scheme strings and string-ports are UTF-8 encoded.
Each char is one to four bytes.
Reserved words in the language are still ASCII.
Symbols may be unicode.
A string's length is in characters, not bytes.
Strings, and the contents of string-ports, are internally still NUL-terminated.
The implementation continues to pass gchar pointers.
Processing scheme strings may require unicode conversions.
The string length value stored in a scheme string's data cell is the length in *characters*.
Most functions taking a string length take the number of characters.
The number of bytes in a string can be had with libc strlen().
## Other forks
Anothers signficant fork of upstream TinyScheme is in the gnupgp project, where it scripts tests.