I started a project to port Emacs (the C parts) manually to Clojure, with the Emacs Lisp automatically transpiled into Clojure in 2012, most of the work was done in early 2013: https://github.com/hraberg/deuce
It can boot Emacs on the JVM and take simple commands, but not much more. It's my intention to eventually revisit this project, but not sure when.
I have a feeling Markus is referring to typing in machine code (in a totally opaque way) using DATA statements combined with a small loader written in Basic.[1] Here's an article discussing this approach.[2] This was very common in the computer magazines during the 80s. You learn a lot about patience and attention to detail, if nothing else. There were attempts to mitigate this..[3]
But there were plenty of magazine and book listings that had very little in the way of machine code and that were mostly regular program code.
Don't forget that DATA statements just contain comma separated constants, and they were useful for a lot of stuff, not just POKEing a byte into memory. Manipulating these constants gave some people their first taste of 'reverse-engineering' level data. :-)
And the fact that people were typing in machine code, to directly manipulate the hardware, is pretty impressive. It's even more impressive if they went on to learn more about assembler in order to modify the code somehow. Instruction manuals for the machines included information about machine language programming.
I actually had a quick look at this, and Kickstarter funding is for US residents only. Indiegogo seems like an alternative (guess there are a lot of opinions on what crowd funding platform to use).
Also, I'm not sure what "rewards" I could give, "listed as a contributor, in a file hidden deep in my git repo"?
Author here. Thanks for the support everyone! Seems like there is an interest in such a thing, so I'll better start hacking on this again.
There are two parts to this. First, pure learning and fun - even if it goes nowhere. Second, "Extensible" is the keyword here. The goal is to find the right balance between backwards compatibility (Emacs Lisp) and forward extensibility (Clojure / JVM), so I'm not interested in writing a new text editor from scratch.
I did consider Kickstarter (currently self funded), but felt I needed something running first.
There is interest. Lots of people would love to see a modern-day Emacs with a modern multithreaded Lisp dialect. Problem is, Emacs is a local maximum - it is very difficult to move away from its architecture to something useful.
Hmm, I'm confused by "the goal is to find the right balance between backwards compatibility (Emacs Lisp) and forward extensibility (Clojure / JVM)". I assumed the idea was to write emacs in Clojure and all the modules would be in clojure so that it would entirely self-contained system with perhaps macros to make porting from emacs-lisp easier. But now it sounds like you want to write an emacs-lisp emulator in Clojure ?
The Emacs Lisp emulator is necessary, otherwise it won't be Emacs. This part will work similar to how shen.clj[1] works.
This is itself an interesting project, but as people have said, "why?"
Because new extensions can then be written in Clojure (or other JVM languages) against the same core API (with shared concepts like "buffer" and "window").
Now the line of what's core and what's extension can be blurred, and while keeping backwards compatibility, one can evolve the entire architecture in Clojure, free from the constraints of the old Emacs code base.
If you're still interested in closures for Java, my port of Ruby's Enumerable module, Enumerable.java, has a limited version for valid Java 5. The current release is 0.2.4, but this post is the best introduction: http://www.jroller.com/ghettoJedi/entry/closures_in_valid_ja...