statically typed, embeddable, compilable scripting langage

925 views Asked by At

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 :

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.

4

There are 4 answers

3
AShelly On BEST ANSWER

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"

3
HRÓÐÓLFR On

I'm pretty sure D is compilable and can be run as a script.

0
Tom Anderson On

This is almost certainly not a useful answer, but Java does actually fit all your bullet points.

  • You can talk to native code with JNI, JNA, or SWIG.
  • As statically typed as it gets without needing a PhD
  • Can be compiled at runtime through the compiler API
  • Is compiled to native code at runtime by some excellent compilers (and there are offline compilers too)
  • Has a number of debuggers

The problem is that it's not exactly a scripting language; you need to write quite a lot of boilerplate to get a small task done, and the APIs are usually fairly involved.

3
Brooks Moses On

Have a look at OpenCL, perhaps? It's designed around being a C-like language that is compiled at runtime, but AMD's latest SDKs provide the ability to do offline pre-compilation as well.

It's not an obvious choice, because it's promoted for use on GPUs, but it's designed to be more broadly-applicable than that and can be run just as well on ordinary CPUs.