Hi Igor
On Thu, Dec 24, 2015 at 3:01 PM, Igor Clark wrote:
> Hey agentzh, this all sounds pretty amazing, thanks for the heads-up.
>
Glad you like it.
> Apart from the stream-based generic TCP/UDP stuff,
Well, UDP will be based on the datagram subsystem instead of "stream".
>> 5. a domain specific language named Edge for efficient and
>> flexible routing and rewriting in NGINX,
>
> Is there any more information about this available yet? I'd love to know
> more about how this will work.
>
It will be a rule based language and compiler, syntactically similar
to Prolog, but semantically similar to CLIPS [1]. It will also
incorporate a first-class macro language to allow auto-generation of
similar rules.
The Edge language will be designed in such a way that extending and
customizing the language primitives will be easy.
The compiler will (eventually) have advanced inter-rule optimizations
like pattern merging and out-of-order optimizations (not CPU-level
out-of-order, but higher level), generating simple and compact Lua
code for OpenResty. Maybe we'll get the sregex engine or Intel's
HyperScan incorporated (Alas, the latter may be too heavy weight for
OpenResty).
It will also have support for hot code replacement (thanks to Lua) and
dynamic code loading from the remote.
The first implementation of the compiler itself will be written in
Perl 5 but it will eventually get ported over to OpenResty so that the
whole toolchain can run online (though not always necessary or
needed).
Furthermore, a WAF system can also be based upon the same compiler and
runtime used by Edge, though providing a frontend compatible with
modsecurity (and possibly others as well).
BTW, I have the domain name edgelang.org registered already though
nothing exists yet behind that domain :)
As you can tell, I'm devoted to DSLs. Just a kinda related note: I
also have plans to invent the Y language whose compilers will target
gdb python, lldb python, systemtap, and possibly other debugging
frameworks. It's hoped that with Y, advanced debugging tools (like
those in my nginx-gdb-utils, nginx-systemtap-toolkit, and stap++) will
only be required to write once, and then just compile and "run
everywhere". And yeah, I also have the domain name ylang.org
registered *grin*
> Thanks again, hope you have a decent break this holiday!
Thank you. I will :)
Best regards,
-agentzh
[1] http://clipsrules.sourceforge.net/