Pascal Script is a free scripting engine that allows you to use most of the Object Pascal language within your Delphi or Free Pascal projects at runtime. Written completely in Delphi, it is composed of a set of units that can be compiled into your executable, eliminating the need to distribute any external files. Pascal Script started out as a need for a good working script, when there were none available at the time.
A scripting engine allows an end user to customize an application to his or her needs without having to recompile it. In addition, you can update your applications by just sending a new script file that could even be compiled to byte code, which cannot easily be transformed back to source code.
Pascal Script includes the following features:
Pascal Script started out in 2001 with CajScript 1.0, which was soon superseded by CajScript 2.0 (later called Innerfuse Pascal Script 2.0). Version 2.0 interpreted scripts while it ran them, which had the disadvantage that every piece of code had to be reparsed every time the script engine went over it. With Pascal Script 3.0, this was changed to a new model, where the compiler and runtime were completely separated from each other and used a custom byte code format to represent the compiled script. This compiled script only contained the bare minimum that was required to execute the code. Later, when Carlo Kok joined RemObjects, it was renamed RemObjects Pascal Script and is now being maintained by RemObjects Software.
One prominent use of Pascal Script is the Open Source InnoSetup project. InnoSetup is a widely used setup engine that uses Pascal Script as scripting engine to provide advanced scripting abilities during installation and uninstallation. Using Pascal Script, users can customize almost all parts of the setup, add new wizard pages, call into dlls to add advanced features and provide custom behavior and install conditions.
Pascal Script is also leveraged extensively by our own Data Abstract for Delphi to provide business rules scripting.
Visit https://github.com/remobjects/pascalscript for more information.