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.
- A compile phase. In this phase the compiler generates intermediate object files from the source files.
- A link phase. In this phase the linker generates an executable object file from all of the intermediate object files in the project.
Already done
- Design a new object file format. All of these changes to Irie Pascal mean that a new object file format is necessary.
- 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).
- Test the updated Irie Pascal.
- 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).
- Gradually add full support for multi-module programs (i.e. gradually start generating code for each piece of the new multi-module syntax).
- Add new programs to the Irie Pascal test suite (to test the new syntax).
- Done.