Documentation update.
This commit is contained in:
parent
018ca9ae37
commit
62ab37d3e9
1 changed files with 13 additions and 8 deletions
21
notes.adoc
21
notes.adoc
|
@ -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:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue