Documentation update.

This commit is contained in:
Eric S. Raymond 2017-06-20 08:20:34 -04:00
parent 018ca9ae37
commit 62ab37d3e9

View file

@ -73,8 +73,8 @@ necessarily pretty ugly by modern standards. Encryption and
checksumming have been discarded - it's pointless to try checksumming have been discarded - it's pointless to try
tamper-proofing saves when everyone has the source code. tamper-proofing saves when everyone has the source code.
A -r command-line been added. When it is given (with a file A -r command-line been added. When it is given (with a file path
path argument) it is functionally equivalent to RESTORE command. argument) it is functionally equivalent to a RESTORE command.
== Translation == == Translation ==
@ -85,14 +85,14 @@ ugly and quite unreadable.
Jason Ninneman and I have moved it to what is almost, but not quite, Jason Ninneman and I have moved it to what is almost, but not quite,
idiomatic modern C. We refactored the right way, checking correctness idiomatic modern C. We refactored the right way, checking correctness
against a comprehensive test suite that we built first and verified against a comprehensive test suite that we built first and verified
with coverage tools (we have over 90% coverage, with the remaining with coverage tools (we now have over 90% coverage, with the remaining
confined to exception cases that are difficult to reach). This is confined to exception cases that are very difficult to reach). This is
what you are running when you do "make check". what you are running when you do "make check".
This move entailed some structural changes. The most important was The move to modern C entailed some structural changes. The most
the refactoring of over 350 gotos into if/loop/break structures. We important was the refactoring of over 350 gotos into if/loop/break
also abolished almost all shared globals; the main one left is a structures. We also abolished almost all shared globals; the main one
struct holding the game's saveable/restorable state. left is a struct holding the game's saveable/restorable state.
The original code was greatly complicated by a kind of bit-packing The original code was greatly complicated by a kind of bit-packing
that was performed because the FORTRAN it was written in had no string that was performed because the FORTRAN it was written in had no string
@ -108,6 +108,11 @@ in favor of proper C strings. C strings may be a weak and leaky
abstraction, but this is one of the rare cases in which they are abstraction, but this is one of the rare cases in which they are
an obvious improvement over what they're displacing... an obvious improvement over what they're displacing...
We have also conducted extensive fuzz testing on the game using
afl (American Fuzzy Lop). We've found and fixed some crashers in
our new code (which occasionally uses malloc(3)) but none as yet
in Don's old code (which didn't).
The code falls short of being fully modern C in the following The code falls short of being fully modern C in the following
ways: ways: