Open dethe opened 10 years ago
Hi Dethe,
It's true; there isn't any documentation about the language. I'm writing my PhD thesis on Nile right now, which should eventually become public documentation for the language. Will update here.
Hi Dan,
That's great news. I've been following this work for years with great interest, it is great to see it all coming together into a real system. Best wishes with your thesis, I'm looking forward to reading it.
Thanks!
On Monday, January 27, 2014, Dethe Elza notifications@github.com wrote:
Hi Dan,
That's great news. I've been following this work for years with great interest, it is great to see it all coming together into a real system. Best wishes with your thesis, I'm looking forward to reading it.
— Reply to this email directly or view it on GitHubhttps://github.com/damelang/nile/issues/3#issuecomment-33448465 .
I'm writing my PhD thesis on Nile right now, which should eventually become public documentation for the language. Will update here.
Would've been great to read it!
Hi Dan,
How's the thesis going? People are waiting! No pressure :)
Hi all,
I'm sorry about the delay. Can't really go into details publicly, but the past year didn't go so well. Hoping to restart this summer.
Sorry to hear that Dan. No pressure then, was just checking in. Very cool work.
No rush. When you get to it. Best wishes.
If someone is interested, I found one of Dan's presentations: https://youtu.be/HAT4iewOHDs?t=17m5s
Thanks procedural!
Hi all! Some more related Video links and and thoughts about the STEPS project in genreal, I hope this help you all : https://gist.github.com/AndreasS2501/6866a3f2fed04c487569
Thank you for sharing! @damelang please, keep us posted on the awesome work that you do on Nile
@damelang Is there any news? I am starting to learn about image processing and this seems more suitable than c++ or Python. Am I wrong? Also I am an admirer of Alan Kay ideas and the work made in vpri.org. By the way, the STEPS project is still going or is it frozen? Keep up the good work. Thanks.
This is such a fundamental piece of computing infrastructure it really fills my heart with sadness that its seems to be lost.
I don't know what caused this but if funding was a problem, I would like to think that current crypto system or other crowd funding mechanisms could help with that.
Be it https://gitcoin.co/ , https://www.osn.global/ or kickstarter to have a (2Dish) graphics stack which decreases complexity would be a service to humanity, nothing less. And I am certain that a critical mass of people does care about that.
Sorry all, no good news.
To answer Ricardo's question: The STEPS project ended in 2012. The subsequent efforts (CDG, and later, HARC) did not last. Funding projects like these is very difficult. We have Alan Kay's extraordinary efforts to thank for the time we did have.
The original organization, Viewpoints Research Institute, began slowly winding down after STEPS (around 2013), and officially closed doors at the beginning of this year (2018). My last year with Viewpoints was 2016.
The personal troubles I alluded to earlier in this thread (in 2015) turned out to be one of a string of very difficult circumstances that I'm still dealing with today. I don't have any substantive documentation to share, and I did not get a PhD.
Toward the end of this summer, I'll be considering new ways forward. Who knows what the future may bring.
Regarding crowdfunding: I've watched the struggles that two friends of mine (Bret Victor and Nicky Case) have had going this route. I really appreciate the sentiment, Andreas, but it's just hard to imagine that that would work out well for this. Their work is more "marketable" and of wider interest than this work. But again, I'll be considering all options later this summer.
Thank you for the update. What kind of funding would do for you to keep working on this project? Please consider setting up a Patreon page. People pay to develop all kinds of things these days. A Playstation 3 emulator developer gets $3.5K per month through Patreon.
Unfortunately, I'd need quite a bit of funding. I live in San Diego, I have two kids, and my wife just went back to school. We couldn't get by on $3.5K. Would have to be over $4K.
I guess we're overdue for the yearly cheer.
This project has kind of enchanted me, so I've been taking some time to try to get it working. I've made some small success here and there. I think I'm starting to grok what all of the parts (in particular: nile, gezira and maru) do. Some interactions are a bit fuzzy, such as whether the nile runtime(s) are generated like the other aspects of the nile toolchain. (It looks to me like the nile runtimes are hand-written.)
As far as I can tell, gezira is the actual codebase that can render things. That has the definition of the graphics processing tools written in the Nile language. It seems that gezira's code (at least the C version) is generated by the nile compiler and the nile-process-template.c
file. I could be wrong about this, but the pattern seems to match very closely. Gezira also has the demos which show off the capabilities we've seen from Alan Kay's presentations. (I've gotten most of the JS demos to work; the C ones build and run, but I need to do some surgery on some of the objc code on my Mac before it will actually show me something other than a blank window.)
Nile itself is (potentially) bootstrapped with Maru, which is itself somewhat difficult to get running. (Ian Piumarta had a small amount of documentation on his website, which now won't load.) The big thing I had to do was to install the Hans Boehm garbage collector gc (brew install libgc
or http://www.hboehm.info/gc/gc_source/).
I'm able to actually compile things (although admittedly, when I ran in the included test, I got a C file and C header out with no real content, even after fixing a couple of errors relating to the definition of Matrix and Point types).
This may be clear as mud for some of the folks on this thread who are interested in this project (or it may be entirely obvious, in which case I apologize), but if I keep looking at this, I may start updating the wiki on this project.
@damelang I hope things are going well for you and your family. I certainly understand your situation. This project is pretty cool, so I'd hate to see it go the way of the Apple HyperCard or something.
Hi all,
I'm pleasantly surprised that anyone is still following this project, even with no significant (public) progress for almost 7 years! So the least I can do is give an update and answer a few questions.
I am currently working for a startup in stealth mode and my job does involve programming language design. I can't share exactly what I'm doing, but hopefully next year I can. People who find Nile interesting will probably find this effort at least as interesting, for mostly the same reasons.
In fact, if anyone would like to work with me on programming language implementation, send your resume to the email address I use here. (I wish Github had a way for me to email this message to everyone who has starred this repository.)
Now for some explanation (@elgertam):
The Nile and Gezira repositories on Github are probably out of sync with each other, in the sense that the latest code in Gezira may not be for the particular version of the language that the compiler in the latest Nile repo supports. And the generated code in Gezira might not be compatible with the version of the Nile runtime in the Nile repo.
I'm sorry -- I wasn't using Github to publish code for others to use, or to build a community around the code, so no care was taken to avoid these problems. It was my intention to eventually go back and fix all this (and push a lot of work that was done in private), but life happened.
Now to some specific questions:
"It looks to me like the nile runtimes are hand-written." ... "gezira is the actual codebase that can render things." ... "It seems that gezira's code (at least the C version) is generated by the nile compiler "
All correct.
"I need to do some surgery on some of the objc code..."
Yes, that code abused Apple APIs pretty severely and probably only worked on my particular machine with the particular OS version I was running. :) The goal was to bypass the Cocoa event loop and any graphics processing by the system and run "on the bare metal" as much as possible.
"I'm able to actually compile things..."
That's quite a feat. Theoretically, with some help from my end, one could compile the Gezira source code down to C (with the right version of the Nile compiler), compile the Nile C runtime, and link them both together with a demo program (like the stars or letters one).
At some point, maybe later this year, I'd be willing to do a video call or something to help anyone who wanted to get up to speed on all this, and document it for others. I can't commit much time to doing it myself, unfortunately.
Hopefully more news to share next year.
Dan
@damelang Hearing from you is exciting. I can only speak for myself, but I would be very interested in a video call later this year or so.
Your comments were very helpful; already this evening, I was able to compile the text-layout.nl
example provided in the repo into C.
For what it's worth, I really would love to see the more recent nile-compiler.l
and related code. In the current repo, the generated examples/text_layout.c
doesn't quite match the examples/c/text_layout.c
, and the linker gives several errors when I try to build against nile.h
. protractor.nl
doesn't compile at all (I suspect the grammar needs to be updated to handle the more concise process definitions such as are found there or in the Gezira code).
I'm probably going to focus on getting Gezira itself working over the next few evenings and hopefully getting some snowflakes to show up.
Thank you again for the comment and for publishing even what we can see here.
@damelang Thanks for creating Nile, it served as an inspiration for in my own graphics language project. I'm glad to hear about your new job, and I will be very interested to read the details once they are unveiled. Good luck!
I, too, would be very interested in the video call and any help I can offer!
Thanks Dan for keeping us posted!
To everyone who is trying to understand this all, compile things, getting things to work together.. could you possibly document all in the README? Don't wait till you are finishend, and at least commit to your own github fork, or even send pull requests, so it is even easier to find for others. I hate to see good people do duplicate work.
.. and @damelang , will you also update the README here with a link to you new project, once it is public?
@elgertam Could you describe how did you compile the text-layout.nl? In my case I just have a file with some includes and that is it.
@alexzlov This puzzled me for a while as well, as I had the same results.
I'm assuming you have Maru working (which it sounds like you do, based on the results you are getting), and have built some version of eval
(I'm using gceval
, but any functioning version of eval
will work). The Nile-to-C compiler is invoked as path/to/nile-to-c-compiler.sh <output_name> <input_file>
In thiscase, the following commands should build text-layout.nl
into text_layout.c
and text_layout.h
:
cd nile/examples
../compilers/maru/nile-to-c-compiler.sh "text_layout" "text-layout.nl"
That will build text_layout.c
and text_layout.h
in the examples
directory. If you open either of the files, you'll notice that text_layout
has been substituted into the names of various procedures and calls.
Please also be aware that you won't be able to run this generated C code with the Nile C runtime also in the repository. The Nile C runtime and the compiler output seem to be out of sync. However, there is a "correct" copy of text_layout.c
and text_layout.h
in nile/examples/c
, and these do appear to work with the bundled runtime (see text-layout-test
in nile/examples/c
). I have done a little work comparing the outputs and analyzing the compilation process in order to determine the differences (although I haven't touched it in a little while for various reasons), but I've only scratched the surface.
Also, if you look at the Nilecode in the Gezira repo, it will not compile using Nile compiler in this repo; however, the generated code that is checked into the Gezira repo should work with the Nile C runtime included here. If you really wanted a hard task, you could try to analyze the differences in the output between the Gezira C code to try to infer the implementation of the various language features. (Gezira, for instance, uses some syntax that isn't quite supported, although it should be fairly simple to reason about.)
@elgertam Thanks a lot!
To all interested: check out this (recent?) presentation. Jump to about the 25 minute mark to see Amelang's portion: https://www.oracle.com/openworld/on-demand.html?bcid=6092429580001
I have looking over the STEPS final report, but it would be nice if there were primers on each of the components. I can sieve FONC and see what I can find.
I would like to experiment with Nile, but cannot find any documentation of the Nile language. Is there anything aside from reverse-engineering the spec from the source or from the Gezira code?