Monday, July 23, 2012

LayerD is alive

Yeap! this project is still alive!! Visit us in Google Code Now with support for C++ and Javascript code generators :)

Monday, May 25, 2009

LayerD SDK 0.5.3

I've updated the LayerD SDK with a new release that includes several bug fixes. It doesn't include new functionality from 0.5.2. It fixes an annoying bug that occurred the first time that you use a new assembly for .NET platform :-) .

Download the SDK on SourceForge: http://sourceforge.net/projects/layerd

LayerD SDK Release Alpha 0.5.3

This SDK version Alpha 0.5.3 includes the following components:

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 alexis.ferreyra@yahoo.com for information or if you want to contribute with the project.

Compiler Usage and Hello World programs

Compiler Usage and hello world programs: http://layerd.wiki.sourceforge.net/compiler_usage

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. /p>

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.

Changes from 0.5.2 version

  • Know bug when first compiling a program for .NET fixed.
  • Bugs while merging nodes at compile time fixed.
  • Bugs about expressions not being captured for compile time execution fixed.
  • Several bugs on Java importer module fixed.
  • Several bugs on .NET and Java code generator fixed.

Documentation

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 25, 2009

Sunday, May 24, 2009

How to use LayerD compilers

Meta D++ compilation

To compile a Meta D++ program into a Zoe program use the "metadppc.exe" compiler:

C:\LayerD\bin\metadppc.exe helloworld.dpp

That will generate a file with the same name but with .zoe extension.

To compile a program composed of more than one file call the compiler for each file:

C:\LayerD\bin\metadppc.exe helloworld1.dpp

C:\LayerD\bin\metadppc.exe helloworld2.dpp

C:\LayerD\bin\metadppc.exe helloworld3.dpp

Take into account that this is possible because the program analysis and code generation is implemented in the Zoe compiler and not in the Meta D++ compiler.

Zoe Compilation

When you have the .zoe files of your program you must compile them with "zoec.exe" compiler. If the program is composed of one file:

c:\layerd\bin>zoec.exe HelloWorld.zoe

That will generate an .exe file for .NET platform that is the default platform and module type.

If the program is composed of more than one file:

c:\layerd\bin>zoec.exe HelloWorld_Source1.zoe HelloWorld_Source2.zoe –pn:HelloWorld

The parameter "-pn:HelloWorld" set the output filename for the generated module, this is required when more than one file is provided for compilation. If your program is composed of only one file and you don't provide the "-pn" parameter then the filename of the sourcefile will be used for the module name.

All steps together

As you need to run Meta D++ compiler and Zoe compiler to get the executable/library these are all the steps together:

For a program composed of one source file:

c:\layerd\bin>metadppc.exe HelloWorld.dpp

c:\layerd\bin>zoec.exe HelloWorld.zoe

For a program composed of more than one source file:

c:\layerd\bin>metadppc.exe HelloWorld_Source1.dpp

c:\layerd\bin>metadppc.exe HelloWorld_Source2.dpp

c:\layerd\bin>zoec.exe HelloWorld_Source1.zoe HelloWorld_Source2.zoe –pn:HelloWorld

Take into account that there will be more than one high level LayerD language (in addition to Meta D++), the Zoe compiler is always used in the same form.

Generation of Dynamic libraries (.dll)

To compile dynamic libraries use the parameter "-lib":

c:\layerd\bin>metadppc.exe HelloWorldLib.dpp

c:\layerd\bin>zoec.exe HelloWorldLib.zoe –lib


 

To compile a Compile Time extension

Compile the extension source code:

c:\layerd\bin>metadppc.exe MyClassfactory.dpp

c:\layerd\bin>zoec.exe MyClassfactory.zoe –ae

Extension Added: MyClassfactory

Not special step required for client code, compile as always:

c:\layerd\bin>metadppc.exe MyClassfactoryClient.dpp

c:\layerd\bin>zoec.exe MyClassfactoryClient.zoe


 

More information on the wiki:

http://layerd.wiki.sourceforge.net/compiler_usage

And on the command line help of the metadppc and zoec compilers.

LayerD Wiki

I've started the LayerD Wiki page here:

http://layerd.wiki.sourceforge.net/

If you know something about LayerD maybe you can contribute :-).

It's very small for now but I will be updating :-P.

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

LayerD documentation

I'm releasing a new SDK that contains a Programmers Reference Manual for Meta D++ and a revised guide to Compile Time programming for .NET programmers.
This reference manual is only in Spanish and was made by Belén Licari, thanks Belén! I've revised most of it and it seems ok ! I will update the manual if I find mistakes.
This is not much documentation taking into account the extension of the project but it's something :-). If someone can help me translating this documentation to English it will be great!!

Tuesday, April 21, 2009

Interactive compilation and RAD tools with LayerD









PD: new SDK coming soon: classfactory debugging, several bug fixes, Java to Meta D++ compiler, basic manual about OO in Meta D++ (in Spanish), more samples.

PD2: I know, this is English... I don't have time to write both Spanish and English so I have to make a choice. ... In fact I don't have time to write in one single language :-P