Summary

Keywords get encoded with leading NUL byte, breaking read-write invariance of symbols starting with a NUL byte

Metadata

Description

Similar to #1077, the string belonging to keywords still get interned by prefixing it with a NUL byte. This means (string->symbol "\000foo") gets read as a keyword and printed back as `#:foo`.

This is of course not really correct.

Fixing it means we'll need to get rid of the in-bound signaling of the keyword information. A potential fix could involve storing keywords in a different symbol table than regular symbols.

Changes and comments

[2019-05-02 18:38:37 UTC] sjamaan changed status from new to closed

[2019-05-02 18:38:37 UTC] sjamaan set resolution to fixed

[2019-05-02 18:38:37 UTC] sjamaan wrote:

Fixed with 8665e7a and a1cd6afd