mirror of https://github.com/GNOME/gimp.git
54 lines
1.4 KiB
Plaintext
54 lines
1.4 KiB
Plaintext
# 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
|
|
|
|
Another significant fork of upstream TinyScheme is in the gnupgp project, where it scripts tests. |