You can get a nice view of the earliest history by running git log --follow FILE (and then shift-G to go to the end).
That said, don’t spend too much time looking at the history. It is an interesting idea as a way to get a handle on small pieces, but much of the code has changed.
if you don’t have any compiler background, from personal experience I can recommend not trying to learn compiler theory by osmosis. I wish I had read Appel much sooner than I did. There are many interesting compilations of free resources you will come across on stackexchange/hacker news/etc., and I had read some of those – but frankly there is no substitute for a good book.
don’t try to learn Lisp/Scheme using flisp. Racket is close enough to be transferrable, but has a more user-friendly environment and many more resources.
(FYI: in the future, please don’t @-blast people with general questions. It’s kind of bad form)
Thanks, that’s exactly that kind of stuff I was after!
PS I am aware from IRC of the netiquette-fail-by-ping-spamming. In this (unusual) case I was deliberately pinging the 6 core devs sitting at Q&A: Julia Core Team Panel (JuliaCon Aug 2014) – if each of them has glanced through the thread, there is a good chance a strong learning resource will result. I hope it won’t upset anyone, but my apologies if it has!
Those aren’t unions – back then {...} was a syntax for literal Array{Any} construction. We got rid of that since it seemed like a waste of syntax. So those calls are passing a type and an untyped array of types to the def_binary_opmacro – which is called using function syntax, rather than the current @m macro call syntax. Also note the file extension back then was .j
That was ten days before the above commit that Keno linked to, and the first “simple” macro system was introduced specifically to do things like def_binary_op. The simple macro system was removed again here: