|
Boost-Build : |
Subject: Re: [Boost-build] [future] Implementation language(s)..
From: Ryan Gonzalez (rymg19_at_[hidden])
Date: 2016-10-18 20:54:58
As a different idea, what about using MoonScript? It's a different syntax
for Lua. It gets Lua's advantages but with a more concise syntax; for
instance, you can omit the braces in most cases for table literals. As much
as I absolutely love Python, the language can be a bit messy when it comes
to trying to write build system descriptions/extensions.
-- Ryan (ã©ã¤ã¢ã³) [ERROR]: Your autotools build scripts are 200 lines longer than your program. Somethingâs wrong. http://kirbyfan64.github.io/ On Oct 18, 2016 8:59 AM, "Rene Rivera" <grafikrobot_at_[hidden]> wrote: > Before we too far ahead of ourselves we have one particular decision to > make.. What do we write the next Boost Build in? Starting with the rough > modules.. It shows some possibilities: > Project Descriptions DSL (i,e, Jam), Python, Lua > Extensions C++, Python, Lua, Haskel > Build System C++, Python, Lua, Haskel > Target Graph C++ > Scheduler C++ > Executor C++ > And, of course, more than one answer is possible. I only listed the ones > that seemed obvious to me. And the pros/cons are specific to each module. > So going from top-to-bottom.. > > == Project Descriptions == > > * DSL/Jam > Pros: It's known to devs and users; It's easy to script *small* tasks; We > can fix & adjust warts as we see fit; It fits well the task of *declaring* > build targets. > Cons: It has all the warts we know about; Essentially no tool (ie > IDE/editor) support. > > * Python > Pros: Full language; Many built-in utilities; It's known to many; There > are many tools to support it; Built-in many OSs, easy to install in others. > Cons: Not a good fit for declaring targets; Large temptation to put lots > of logic at the project declaration layer; Too big to embed (needs external > install and linking); Heavyweight run-time, and hence slower startups. > > * Lua > Pros: Full language; It's known to many; Easy to embed (ie no external > install needed); Good tool support (syntax coloring in most editors); > Lightweight run-time, hence fast startups. > Cons: Not well known in this group; Unknown if it would fit declaring > targets. > > == Extensions (ie toolsets, external lib config, etc.) == > > I'm not going to include DSL/Jam in the choices here, because I think we > all agree that this is one of the key pain points in the current design. > > * C++ > Pros: We all know it well; Excellent tool support; Performance; If build > system is in C++ would provide direct access to it; Likely easier to > integrate with project descriptions layer (if needed). > Cons: Rarely built-in OS tools (but required for at least C++ projects > anyway); No common existing package distribution service. > > * Python > Pros: Full language; Many built-in utilities; It's known to many; There > are many tools to support it; Built-in many OSs, easy to install in others; > Existing package distribution (pip); We can likely leverage some of the b2 > Python port code; Packages support both native C/C++ and Python. > Cons: Too big to embed (needs external install and linking); Heavyweight > run-time, and hence slower startups. > > * Lua > Pros: Full language; It's known to many; Easy to embed (ie no external > install needed); Good tool support (syntax coloring in most editors); > Lightweight run-time, hence fast startups; > Cons: Not well known in this group; Not a lot of built-in libraries; No > existing packaging system. > > == Build System == > > * C++ > Pros: We all know it well; Excellent tool support; Performance; Likely > easier to integrate with project descriptions layer (if needed). > Cons: Rarely built-in OS tools (but required for at least C++ projects > anyway); No existing package distribution service. > > * Python > Pros: Full language; Many built-in utilities; It's known to many; There > are many tools to support it; Built-in many OSs, easy to install in others; > Existing package distribution (pip); We can likely leverage some of the b2 > Python port code; Packages support both native C/C++ and Python. > Cons: Too big to embed (needs external install and linking); Heavyweight > run-time, and hence slower startups. > > == Runtime == > > Collecting all the rest of the modules into one runtime. > > * C++ > Pros: We all know it well; Excellent tool support; Performance; Likely > easier to integrate with project descriptions layer (if needed). > Cons: Rarely built-in OS tools (but required for at least C++ projects > anyway); No existing package distribution service. > > * Python > Pros: Full language; Many built-in utilities; It's known to many; There > are many tools to support it; Built-in many OSs, easy to install in others; > Existing package distribution (pip); We can likely leverage some of the b2 > Python port code; Packages support both native C/C++ and Python. > Cons: Too big to embed (needs external install and linking); Heavyweight > run-time, and hence slower startups. > > First, if there are other languages you think we should consider please > speak up. Note, I've not included Haskel here, even though I listed in the > wiki. As I think, after some research, that it's not worth seriously > considering. > > Second, what I recommend.. Given the above what I'm thinking we should do > it is: > > Project Description: DSL/Jam. It's served well for this task before and we > know its characteristics. > Extensions: Python. It's flexibility and packaging system would be ideal. > Build System: C++. > Runtime: C++. > > This essentially means that most of the system would be in C++. In > particular I would suggest that we write the "Build System" and lower > modules/components as a shared library that can be used from Python, or any > other language that has an FFI. That way we make it easier to integrate > into IDEs, thinking of them as front-ends to the build system. Also one > major advantage is that we can publish the entire thing, ie with the CLI > front-end, as a Python pip installable package. > > > -- > -- Rene Rivera > -- Grafik - Don't Assume Anything > -- Robot Dreams - http://robot-dreams.net > -- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail > > > -- > -- Rene Rivera > -- Grafik - Don't Assume Anything > -- Robot Dreams - http://robot-dreams.net > -- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail > > > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/ > mailman/listinfo.cgi/boost-build > >
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk