3 ms·
The webserver, which is written in Felix, translates a particular format called "fdoc" to create the tutorial and slides, including embedded colourised hyperlin
by Yttrill 14y ago
The webserver, which is written in Felix, translates a particular format called "fdoc" to create the tutorial and slides, including embedded colourised hyperlinked Felix and C++ code. The translation is to a mix of HTML5 and Javascript. This link shows the source of the first slideshow:
http://felix-lang.org/web/slides/language-overview.fdoc?text http://felix-lang.org/web/slides/language-overview.fdoc?text
All the documentation and layout needs a lot more work.
[BTW: I'm the primary developer]
- bdcravens 14y agoAll the documentation and layout needs a lot more work. Yes, clicking links to get a small page of content to only find another link to click .. gets old really fast. (Old as in it feels like the Java documentation circa 2001)
- cpeterso 14y agoYttrill, I see that Felix is 12+ years old. I remember reading about Felix on Lambda the Ultimate a few years ago. :) Over those 12 years, what are some of the biggest changes (in the language or its implementation) you have made? Where the changes mostly evolutionary? https://github.com/felix-lang/felix/commits/master?page=135 https://github.com/felix-lang/felix/commits/master?page=135
- Yttrill 14y agoThis is a hard question to answer. In general the emphasis changed from getting the compiler to work, and to generate efficient code, to using the technology to implement a rich set of libraries (feedback into compiler), and then writing some simple tools (feedback into libraries and compiler). Probably the single biggest feature was the introduction of Haskell style type classes as a way to systematically provide "generic" features like comparisons and conversions to string which are de rigueur in dynamically typed scripting languages. Less obvious but quite important was switching the parser from Ocamlyacc to Dypgen combined with OCScheme, which together put the grammar in user space, allowing almost the entire grammar to be put in the library. A lot of new features were added with very little or no change to the compiler by just adding some EBNF grammar and suitable Scheme action code to the parser. This can be very effective. For example, with only one extra term in the compiler, I added a dynamic object system that looks a lot like Java with objects and interfaces including "implements" and "extends" stuff. It just uses records of closures (the compiler mod added record extension), but the syntax is neat and almost immediately I used it to factor the webserver into separately compiled plugins. I originally implemented this as a kind of joke, to show off the expressive power in respect of Domain Specific Sub-Languages, but not intended for use. The joke was on me :)
- cpeterso 14y agoThanks for the background. Moving the grammar into "user space" from the compiler is a particularly interesting feature!