Fork me on GitHub

Nothing can kill Maccy, not even fire.

News

January 18 2015

Started reading Scott Meyer's latest opus Effective Modern C++ and right away noticed a few things that couldn't be done in Macaroni without resorting to a block, which is create a function with a return type of auto or decltype(auto) or one that has a trailing return type. Since Macaroni can do templates now it didn't seem that hard to do, so I did it. Of course, since Macaroni doesn't really understand C++'s syntax there's some special rules to follow, as documented here.

January 4, 2015

Worked on Macaroni quite a bit recently. The latest, which I'm calling Version 0.3.0 for no real reason, has the following huge changes:

  • Spinning up new projects is easy now with the --newProject command line argument. Just write "macaroni --newProject HelloWorld" to create a directory "HelloWorld" filled with a very simple project file that builds a library along with an executable and unit test.
  • Added support for the "default" and "delete" keywords when used to either explicitly accept or forbid the automatic creation of a constructor function.
  • Made massive changes to the C++ generation scripts. Before everything was very class centric, where as now the generation starts at the unit level. This actually fixed a lot of things and was the culmination of work I actually started two years ago when I created the whole concept of Unit Targets as the anchoring points for generated source code. This was part of a general exorcism of cruft code (don't worry though, there's plenty left).
  • Really improved the generation of nested classes and typedefs after cleaning up the unit generation code. Before it was a bit of a crap shoot where as now things are pretty consistent.
  • It's now possible to correctly add most function overload to units without resorting to use of the ~block keyword! Unfortunately "int main(int argc, char * argv[])" is out due to the use of unsupported syntax in the type for argv, but "int main()" works just fine.
  • Template parameter lists are now supported for functions and classes! Currently only the "typename" keyword will work, and default template arguments aren't supported, but parameter packs are (!!).
  • Unfortunately, class templates can't have "overloads". This is due to a design flaw in Macaroni, which I'd like to fix one day.
  • Added support for the override keyword.

June 6, 2014

Macaroni version 0.2.3 is out now. This version adds support for the following:

  • R-Value references, making it possible to make move constructors.
  • The export keyword.
  • Enums, both the old style and C++11 class versions.
Additionally, a bug in Macaroni was fixed so that ~unit's containing mulitple classes will now resolve dependencies in the correct order. So say you have a unit with class B which depends on class A, and define them in the order of B then A. Macaroni will correctly create the file with A defined first followed by B. There's still some bugs to fix if you want to completely control which units your code lives in but this fix goes a long way to resolving things.

April 12, 2014

Macaroni has been upgraded to use Lua 5.2. This ended up seriously changing the way built in libraries work, as the result of the call to "require" must now be saved as a local variable. This change is for the better as it represents current Lua best practices.

The command line options were also changed to be more consistent with a modern day command line apps instead of the random nonsense they had been in the past. For example, there's finally integrated help you can use via "--help". How novel!

March 15, 2014

I've completely revamped Macaroni's webpage to try to provide the most relevant information as quickly as possible.

Installing Macaroni on Windows has been made easier recently thanks I also recently created a Chocolatey package for Macaroni. Chocolatey is a package manager for Windows which has really impressed me so far, and I was able to make it install the Visual C++ runtime as a dependency of Macaroni, making the process relatively trivial.

Copyright 2014 Tim Simpson, released under the Apache License