Tuesday, April 13, 2010

Irie Pascal 3.0. Adding support for multi-module programs.

I'm currently working on adding support for writing multi-module programs. I've decided to support the Object Pascal syntax for this. If you're not familiar with this syntax (with UNITs and USES clauses) then please see chapter 3: Programs and Units in the Object Pascal Language Guide for a look at this syntax.

NOTE: Irie Pascal will NOT be able to use most units written for other compilers, and I am NOT planning to create units for Irie Pascal that are similiar to units available for other compilers.

I am planning to make sure that the units supplied with Irie Pascal don't have the same names as units available for other compilers (maybe I'll prefix the Irie Pascal unit names with "Irie"). So I'm leaving the door open for someone else to write units for Irie Pascal that are similiar to units available for other compilers. I'm not going out of my way to make Irie Pascal incompatible with other compilers (I don't like it when vendors do that), but I'm not making any heroic efforts to make it compatible either.

I'm adding a linker.
Right now, Irie Pascal doesn't use a linker, instead the compiler just generates executables directly from the source files. This is not difficult, because Irie Pascal builds each program from a single module, but building programs from multiple modules is much more complicated so I've decided to build programs in two phases.
  1. A compile phase. In this phase the compiler generates intermediate object files from the source files.
  2. A link phase. In this phase the linker generates an executable object file from all of the intermediate object files in the project. 
Adding support for multi-module programs

Already done
  1. Design a new object file format. All of these changes to Irie Pascal mean that a new object file format is necessary.
 To be done
  1. Switch over to the new object file format. Which means updating Irie Pascal to compile existing (single-module) programs in two phases and generate files in the new format).
  2. Test the updated Irie Pascal.
  3. Add syntax-only support for multi-module programs (i.e. update Irie Pascal to recognize the new multi-module syntax but don't generate any code for it yet).
  4. Gradually add full support for multi-module programs (i.e. gradually start generating code for each piece of the new multi-module syntax).
  5. Add new programs to the Irie Pascal test suite (to test the new syntax).
  6. Done.

Irie Pascal 3.0. Added support for HTMLHelp.

Work on the next release of Irie Pascal is continuing.

I have finished adding support for HTMLHelp (the newer Windows Help format that replaces WinHelp). Irie Pascal now includes both WinHelp and HTMLHelp versions of the online help manuals. The HTMLHelp versions are used when Irie Pascal is run on Windows 2000 or later, while the WinHelp versions are used on earlier versions of Windows.