Re: Re[2]: [ANN] Lua Fun - a functional programming library for tracing JIT compiler

  • From: Dan Eloff <dan.eloff@xxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Wed, 20 Nov 2013 14:47:13 -0500

Impressive. I'm frequently amazed by the performance of the LuaJIT
compiler.

Thanks for this library!


On Wed, Nov 20, 2013 at 2:40 PM, Roman Tsisyk <roman@xxxxxxxxxxxxx> wrote:

> I'm sorry, there was a type:
>
>     n = 100
>     ans = sum(map(function(x) return x^2 end, take(n,
> tabulate(math.sin))))  -- was sin(x)
>
> Wednesday, November 20, 2013 11:05 AM -08:00 from :
> > > sum(map(function(x) return x^2 end, take(n, tabulate(math.sin(x)))))
> >
> > Wow, LuaJIT translates that to one loop?  amazing!  Does it implement
> > stream fusion?
> >
>
> The magic is done by the tracing compiler [1]. LuaJIT can trace entire
> loops
> and optimize them wholly, instead of optimizing single functions.
> The compiler unrolls compositions of functions, eliminates high-order
> functions
> replaces recursions with loops and makes other sophisticated optimizations.
>
> I have never seen such powerful JIT in any language. Seriously.
> I think Mike Pall can provide more details.
>
> The source code is fully compatibly with Lua 5.1. However,
> this library was especially optimized to use tracing JIT at its full
> strength.
>
> [1] http://en.wikipedia.org/wiki/Tracing_just-in-time_compilation
>
> --
> WBR,
>   Roman Tsisyk <roman@xxxxxxxxxxxxx>
>   http://tarantool.org/ - an efficient in-memory database and a Lua
> application server
>

Other related posts: