Hi,

So, I promised that I would write up a description of ioke, so here 
goes. This is mostly tentative right now, since the implementation is 
not at all finished, and I'm finding myself yak shaving all the time.

ioke is a language for the JVM. It takes influence mostly from Io, 
Smalltalk, Lisp and Ruby, in that order. The goal is to retain the Io 
promise of no keywords and an extremely regular syntax. Everything is 
message passing, and the object system is prototype based.

If you are familiar with Io, the major changes from Io will include 
these things:
- Totally different core/standard library (ioke's libraries will be 
heavily influenced by Ruby)
- More flexible syntax for handling operators (including support to make 
[]= and equivalent possible)
- Syntax for CL-style macros
- Tight Java integration
- All syntax translates in a simple, predefined way to equivalent 
message passing operations. Even "abc" will actually translate into a 
message call to Core string.

The implementation will initially be extremely inefficient, mostly 
because all metaprogramming will happen at runtime. The macros will not 
really be CL style macros, but rather syntax that translates into 
expansion and then call. This will give large amounts of flexibility at 
the cost of performance. I have high hopes that speed can be fixed after 
the implementation works as I'd like it.

I have several things I want to achieve with the language - I want it to 
be the ultimate extension language for Java applications and I want it 
to be a language that makes it very natural to write internal DSLs, in 
the manner of Lisp little languages.

The core of the language is implemented in Scala, and uses Antlr for the 
lexer and parser. The goal will be to make the language as self hosting 
as possible, and because of the regular nature of the language, it 
probably won't be too hard to make a ioke program that translates ioke 
code into Scala or Java code, so there is a distinct possibility of 
making it completely self hosting.

I have not announced this project yet, because it's not really ready 
enough to run anything yet. As soon as the core is there, I will 
announce it and blog about it and so on. I will also send updates here 
with information about what challenges I find on the JVM and so on.

The language will have Emacs support initially, since that's what I work in.

Cheers

-- 
 Ola Bini (http://ola-bini.blogspot.com) 
 JRuby Core Developer
 Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
 Practical JRuby on Rails (http://apress.com/book/view/9781590598818)

 "Yields falsehood when quined" yields falsehood when quined.



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to