I'm lookign for a langage with the following features :
- SWIG-compatible, or similar. Compatibility with C++ should be easy :
C, C++, AllegroCL, C# - Mono, C# - MS .NET, CFFI, CHICKEN, CLISP, D, Go , Guile, Java, Lua, MzScheme/Racket, Ocaml, Octave, Perl, PHP, Python, R, Ruby, Tcl/Tk
- Statically typed : No myObject.CompletelyNewFieldWithUnknownSideEffects = GuessWhat() like in Lua. No isinstance() like in php. No newVariableOfUnknownType = foo() like in Python. Preferably strongly typed, too ( "Hello"+"0" rather than "Hello"+0 ) :
C, C++, C#, D, Go, Java, Ocaml, PHP, Ruby ? Other ?
- Can be compiled at runtime ( and exec("gcc plugin.cpp")! doesn't count ! ) into whatever asm/intermediate langage.
C : libCLang, Ch; C++ : Ch; Any scripting langage; Other ?
- Can be compiled (either offline or at runtime) into a x86 .dll/.so, OR .cpp
C : gcc, libClang, etc; C++; C#; D; Python; Go; OCaml; Lua : LuaJIT; Ruby : Ludicrous
- Preferably with debugger :)
TL;DR
I would like a statically typed, embeddable scripting langage which can be compiled for perf.
Ideas ? Comments ? Input of any kind ? Thanks !
EDIT Valid propositions so far :
- Java : http://download.oracle.com/javase/6/docs/api/java/lang/Compiler.html
- C# : http://support.microsoft.com/kb/304655/en-us
- C++, interpreted by Ch, compiled with usual compiler , hopefully compatible with GCC/VC
- Racket : http://pre.racket-lang.org/docs/html/inside/overview.html#%28part._embedding%29
So there is much more hope than I originally thought :) Thank you all ! I'll keep investigating and will accept an answer when I have more experience on the subject.
Ruby is in each of your lists, and the Rubinius compiler compiles it down to bytecode. Does that meet your needs?2nd try: Have you looked at Boo: "an object oriented statically typed programming language for the Common Language Infrastructure"