Sunday, May 3, 2009

LayerD SDK 0.5.2 - Now you can do Java compile time programming :-)

I'm releasing a new SDK (here sourceforge) that contains reference guides and a Zoe Code Generator for Java language, so you can do compile time programming for Java :-). It's alpha code and do not support things like generics, annotations or non-static inner classes but you can generate a lot of code on compile time :-), and play with new semantic structures or RAD tools using interactive compilation.

Here the readme of the SDK:

LayerD SDK Release Alpha 0.5.2

This SDK version Alpha 0.5.2 includes the following components:

Hardware Requirements

Even when any PC that can run Windows will work properly these are recommended specs:
  • 512MB RAM
  • Processor: 1.5GHz AMD/INTEL
  • Hard disk space :-).
It’s not recommended to run LayerD compilers from network or pendrives because of temporal files created could degrade compilers performance.

Software Requirements

  • Windows 2000/2003/XP/Vista (not tested on Windows 95/98)
  • Microsoft .NET SDK 2.0 or greater.
  • Java SDK 1.4 or greater to generate Java programs. (not mandatory, only to use Java Code Generator).
  • Others SDK can be needed depending on target programs (for example .NET Compact Framework SDK for mobile applications).

Quick start

To make programs on LayerD framework you must make the programs on one high level language (currently Meta D++, also there is a Java clon that is distributed separately). After that, you must compile Meta D++ source code using metadppc.exe compiler and the generated .zoe files with zoec.exe compiler. Check the instructions on Meta D++ Programmers Guide.
It’s recommended to read the Meta D++ programming guide for .NET programmers even if you don’t program for that platform because of generic concepts explained in this document. There isn’t an IDE currently available. I use Notepad++ editor or Visual Studio and have custom macros that call compilers. You can use any text editor.
Note: There is plug-in for Visual Studio that implements a kind of “Intellisense”; it’s only a concept and don’t work on programs that have more than one file but it can be useful (on files with less than 1500 lines of code :-P ).
More information on: http://layerd.net, http://layerd.blogspot.com, http://sourceforge.net/projects/layerd.

Please don’t hesitate to contact me at mailto:alexis.ferreyra@yahoo.com for information or if you want to contribute with the project.

Debugging

Programs can be debugged using standard infrastructure of the target platform. For example, if you program for .NET you can use Visual Studio or SharpDevelop for debugging. If you develop for Java take into account that Zoe Code Generator for Java is Alpha version and don´t generate equivalence between Meta D++ source code and generated Java code, so it will be a bit more challenging but you can use any Java IDE to debug generated code, frequently visit LayerD’s website because this module will be updated frequently.

To debug classfactorys (compile time functionality) you can use –wfd flag on zoec.exe compiler the compiler will wait until a compiler attaches to the compiler process before continue. So you can run the compilation with –wfd flag and attach to zoec.exe process from a debugger like Visual Studio (first set breakpoints on compile time source code).

Languages features implemented on this SDK

LayerD is a large, ambitious and little complex project so not all desired features of Meta D++, Zoe, and Zoe Code Generators are implemented. Currently these are the features included until now:
  • Main features of Zoe and Meta D++ languages to support standard object oriented programming like classes, interfaces, single inheritance, enumerations and statements.
  • Compilation of Classfactorys, standard and interactive.
  • Multiple compile times on Zoe compiler.
  • Interactive compilation for Meta D++ language.
  • Generation of .NET assemblies for desktop and mobile, .exe and .dll.
  • Generation of .class files for Java (using javac compiler)
  • Automated import of types for .NET platform but not including generic types, nulleables and attributes.
  • Automated import of types for Java platform but not including generic types or annotations.

Languages features NOT IMPLEMENTED on this SDK

These are the desired features of languages and code generators not implemented in this SDK:
  • keyword modifier on classfactory members
  • setplatforms directive on classfactorys members
  • “hybrid” classfactorys
  • “auto instantiation” of classfactorys
  • calls blocking semantic on classfactorys (to warranty that all instance members of one classfactory will be executed on the same compile time or skipped to next compile time).
  • automatic re-composition of classfactorys
  • classfactorys that depends on other classfactorys currently installed on Zoe compiler
  • import of generics types and attributes/annotations on .NET and Java
  • homogenization of base types (for Java)
  • some kind of semantic checks are not currently implemented by Zoe compiler like requiring return instructions on all code paths, this checks are implemented by lower level compilers on code generators for .NET or Java, but the required behavior is to be controlled on Zoe compiler.
  • annotations or attributes are not implemented on Zoe or Meta D++ (even when it can be imitated by classfactorys)
  • generation of “Extended Zoe” is not implemented on Zoe compiler, so code generator for java, for example, can’t implement custom operators or properties.
  • multiple inheritance is not implemented
  • forced member virtualization is not checked by Zoe compiler
  • Meta D++ compiler doesn’t support Unicode files, only ASCII, but it must support Unicode :-P
  • support for more than one XML namespace on Zoe files

Documentation

Know bugs

As this is an alpha release it has several know bugs most important ones:
  • Sometimes you will get several errors that said something like “__error type is not found”. Rebuild the file with Zoe compiler and will fix the error.
    If you find errors on Meta D++ compiler or Zoe compiler (even if you are not sure) please let me know about that and if you can send to me the source that generate the error.

LayerD SDK FAQ

Why is this SDK in mixed English / Spanish ?

Because I don't have time to maintain both English and Spanish SDK. So, I'm translating all to English. If you want to help me that will be great!!

There is a distribution for Linux ?

No, there isn't. It's perfectly possible to compile all modules in Linux but I don't have time to do that and I use Windows more than Linux. May be you can help me with this task.

Can be used to develop commercial applications ?

Yes, In fact it was used for at least two pretty big commercial projects (both on .NET). Please let me know if you use LayerD on a commercial project !
You don't have to pay me for that, this is a free and open source project. If you make money consider a donation :-)



Thanks for downloading LayerD SDK,
Be happy doing compile time programming :-)

Distribution date: May 3, 2009

No comments: