lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Fri, Mar 8, 2013 at 10:08 AM, Spencer Parkin
<spencer.parkin@gmail.com> wrote:
> as I've been programming, (which is a fairly long time.)), that I really,
> really hate build systems.

Amen!  I know building software is a messy business, but why must it
be so much less elegant?

> 1) Use an appropriate language for the build system.  Don't just make up
> some dumb language for the new build system.

And that's totally where Lake comes in:

https://github.com/stevedonovan/Lake

Just Lua, and handle the dependencies and the tool invocation directly.

> 3) Flexibility.  Maybe this system doesn't even care what a file system is.
> Then you could probably use it for anything, not just building a project.

I've always wanted to try this - original inspiration for Lake was
probably Rake, although Lake has collected a lot of compiler-specific
stuff over the years.  But there's this general vision of
dependency-oriented programming - the objects need not be files, they
just need something that _works_ like a time stamp.

> 4) It's got to be fast.  Be able to take advantage of multiple processors.

Lake already has a -j flag, and man it does make a difference!

> 5) Scalability.  Obviously, being smart in your choice of algorithms is one
> means to this end.  If it doesn't scale, it sucks,

That's my concern. I do automatic dependency checking, and you get
this explosion of dependencies on zillions of header files. Pruning
the tree becomes important, and I would really appreciate some advice
on this.

> 4) Write the dep-graph executor in C/C++.  Be as fast as possible!

I'm not sure we'd actually gain much - the shelling-out to commands is
the heavy work, otherwise it's checking timestamps. And why not use
LuaJIT and get that speed anyway?

I'm glad that someone has been thinking on the same lines as I was...

steve d.