History • Decided on learning more about flex / bison. • “Why not write a language instead of a calculator?” • 2 hours later: 2 developers, a github account and domains registered. • Saffire, dutch/english mix of “saphire” (as in: perl / ruby / ...).
History • Primarily based on PHP / Python syntax with some ideas from other languages (java, ruby, javascript). • We’re 10-15 years behind, but 10-15 years of traps and pitfalls we can avoid.
Technical info • Open source (3-clause BSD license). • Written in C. • Imperative language. • Dynamically and strong typed. • Byte code generation. • Interpreter for now. • JIT (and/or compilation) later.
Selling points • Everything is an object. • Even “foo”, 2, /reg?ex*/ and 3.14159265. • UTF-8 out of the box. • No functions, just objects and methods. • Method and operator overloading.
Method Overloading class Foo { public method foo(String $a) { // Do something with a string } public method foo(Numerical $a) { // Do something with a numerical } public method foo($a) { // Any object (not string or numerical) } }
Saffire for PHP • By default returns “self” ($this) (fluent interface) • foreach/else while/else breakelse • try / catch / finally • “ducktyping” and interfacing are supported • Out of the box annotation-reader
Current Status • Initial scanning / parsing done (flex/bison). Might change to lemon. • Language specification on its way. • Still figuring out problems. • Abstract Syntax Trees (AST) can be generated. • Initial object module engine created (heavily based on Python’s) • Initial bytecode generator
What’s next • Finish the language specification. • Implementation specification • Bytecode optimization phase (?) • Create the interpreter. • Create a more stable lex / parse system (pureparser / lemon) • ??? • Profit
(Un)Stable release? • Depends on the help! • 0.01 not until somewhere (late) 2013. • Roadmap hasn’t been created. • First (dutch) meetup: 26 october 2012
We need YOU... • C programmers, but many, many others for websites, documentation, language specification, testing/QA, app writers, framework writers, evangelists, etc, etc.. • USERBASE! • If you can read this, you can help us!