arclanguage / anarki

Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.
http://arclanguage.github.io
Other
1.17k stars 160 forks source link

Migrate `master` and `stable` branches to `unsafe-set-immutable-c[ad]r!` #218

Open rocketnia opened 1 year ago

rocketnia commented 1 year ago

On Arc Forum, tubsy notes that mutating cons cells doesn't work in the latest official Arc 3.2 release:

arc> (= x '(1 2 3))
(1 2 3)
arc> x
(1 2 3)
arc> (scar x 'a)
a
arc> x
(344739504129 . 10059776)

@akkartik further observes that the Anarki stable branch is broken this way as well.

This is probably because #183's updates to unsafe code for Chez Scheme-based versions of Racket were only applied to Anarki's master branch.

A couple of days after #183 was merged, Racket introduced unsafe-set-immutable-car! and unsafe-set-immutable-cdr! specifically as a more stable unsafe way to mutate immutable cons cells going forward. This was available starting with the Racket 8.0 release. We should probably migrate both the master and stable branches to that.