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.