Subj : Re: -64 and -46 option missing in 101
To   : Wilfred van Velzen
From : Dan Cross
Date : Thu Apr 23 2020 07:30 am

On 22 Apr 2020 at 07:10p, Wilfred van Velzen pondered and said...

Wv> On 2020-04-22 12:54:00, you wrote to me:
Wv>  DC> Sure. Which part of it?
Wv>
Wv> Why you don't trust binkd.

Ah.  It's a lot of code, it's exquisitely complex,
and it's written in a weakly-typed, unsafe language.

The first time I tried to run it, I ran into a
memory corruption issue that had lain dormant for
two decades.  Another memory-out-of-bounds bug
showed up when it was compiled with IPv6 support.
A filesystem permissions problem caused an
infinite loop with no diagnostic.  On my system,
it mysteriously crashes *inside the Perl
interpreter* when parsing nodelists; I  some
sort of memory corruption issue in binkd that
manifests itself inside the Perl shared object.

Finally, I'm not at all sure how resilient it
is to avoiding data corruption in the event of
failure (either binkd or the system).

At that point, I realized I was faced with a
decision: do I double down on binkd and attempt
to fix it, or do I write my own replacement?

The former involves ensuring compatibility with
all sorts of legacy environments that I'm neither
equipped nor interested in supporting (OS/2 and
Win9x with ancient compilers, for example: even
if I wanted to support those -- and let me be
clear, I do not -- I don't have a development
environment for them and while I could set one
up, I'm just not interested) and that require
workarounds for lacking features available in
modern standards.  The whole suite has very
little in the way of unit-level tests, let alone
integration style tests.

And how much effort do I really want to put into
it, anyway?

The other option means I can make a clean break
from the past, write in a type- and memory-safe
language (I chose Go), write as many tests as I
like, and take advantage of built-in support for
modern testing practices etc.  Further, I'm
beholden to no one but myself to maintain
compatibility.  Since this is all just for fun
anyway, I chose that route.

--- Mystic BBS v1.12 A46 2020/04/20 (Windows/32)
* Origin: Agency BBS | Dunedin, New Zealand | agency.bbs.nz (3:770/100)