Introducing ioke

8 views
Skip to first unread message

Ola Bini

unread,
Apr 30, 2008, 10:51:18 AM4/30/08
to jvm-la...@googlegroups.com
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.


Reply all
Reply to author
Forward
0 new messages