>  1.8
>  2.0
>  2.2
>  3.0
>
>If there were more concern about compatibility -- all 2.0 programs will
>compile an work with 3.0 -- then we would not need to keep the old
>versions.

One of these changes is how #:autoload works. One of the options to preserve 
compatibility yet introduce the new behaviour, could have been to define 
‘define-module2’ (to be used instead of the (deprecated) ‘define-module’) with 
the new semantics. Since their implementations would share almost all code, 
there wouldn’t be serious implementation costs(*). The only significant 
downside I see here is that ‘define-module2’ is a rather uncool name, but 
that’s a non-issue.

(*) I refuse to call it ‘maintenance burden’. Software isn’t hardware and 
doesn’t rot, in the absence of changes in external demands and absence of 
internal changes, the quality of software is independent of time. The ‘burden’ 
that would be referred to, is not some oil to applied or gears to regularly 
replace, but rather a cleaning up past mistakes (once per mistake) that 
probably could have been prevented in the first place.

Best regards,
Maxime Devos.

Reply via email to