Emacs internals: Deconstructing Lisp_Object in C (Part 2)
thecloudlet.github.io
Emacs internals: Deconstructing Lisp_Object in C (Part 2)
1–10 of 23 posts
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#2Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#3It obviously also means that all the other tag values have to use 1 as the last bit.
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#4SBCL uses a single zero bit to tag integers. This trick means the representation of n is just 2n, so you can add the values directly without any decoding. It obviously also means that all the other tag values have to use 1 as the last bit.
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#5Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#6Is AI able to measure the ratio of craft to cruft source lines of code in Emacs over its lifetime?
I love Emacs' design. I think the cruft is minimal, and pretty much every line of code I studied had a good reason for being there.
And I also think there's a lot to learn from studying how Emacs is implemented. Few people will probably do this, but it was a nice experience for me. I learned a lot about gaps, text properties, how buffers are implemented, how the eval function works (it's surprisingly complicated between buffer-local variables and thread-local variables, but it's hard to think of a simpler alternative), and how intervals are implemented.
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#7SBCL uses a single zero bit to tag integers. This trick means the representation of n is just 2n, so you can add the values directly without any decoding. It obviously also means that all the other tag values have to use 1 as the last bit.
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#8Is AI able to measure the ratio of craft to cruft source lines of code in Emacs over its lifetime?
Not AI, but I studied it extensively for about 6 months. I was trying to port Emacs to JS, line by line, about eight years ago. I love Emacs' design. I think the cruft is minimal, and pretty much every line of code I studied had a good reason for being there. And I also think there's a lot to learn from studying how Emacs is implemented. Few people will probably do this, but it was a nice experience for me. I learned…
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#9SBCL uses a single zero bit to tag integers. This trick means the representation of n is just 2n, so you can add the values directly without any decoding. It obviously also means that all the other tag values have to use 1 as the last bit.
Why do they use the bottom bit for tag and not the top bit?
Re: Emacs internals: Deconstructing Lisp_Object in C (Part 2)
#10I read both articles and am looking forward to your next! I’d be interested in understanding more about the relationship of EMacs to GCC since you noted the authors were the same and the internals were written with some compiler awareness.