- Author: Vadim Konovalov
- Title: single-file GUI-enabled executable for Windows and then for Linux w/o temporaries and dependencies
- Synopsis: Proposal is to make a distribution of Perl program with a single-file executable much like PAR approach but without any temporaries, thus having existing filesystem untouched in any way. This executable will include Tcl/Tk into it and all Perl and Tcl/Tk core scripts will be inside this executable and will be unpacked on demand into memory.
single-file GUI-enabled executable for Windows and then for Linux w/o temporaries and dependencies
Proposal is to make a distribution of Perl program with a single-file executable much like PAR approach but without any temporaries, thus having existing filesystem untouched in any way. This executable will include Tcl/Tk into it and all Perl and Tcl/Tk core scripts will be inside this executable and will be unpacked on demand into memory.
Benefits to the Perl Community
Having a possibility of distributing applications is a frequently required feature. A potential user could have no Perl installed, or it could have incompatible version or lack some CPAN modules. Fortunately there are several ways to solve this problem. All these solutions are having drawbacks however. For example, PAR extracts all files into some temporary directory and then runs a program from there, thus having at least 3 un-effectiveness problems: it pollutes filesystem with temporaries (what if there's limited space on TEMP), it extracts all script files - even script files that are not actually needed (actual program run could skip), and also it creates extra subprocess, which is needed to startup properly.
There are also non-free solutions, but those are not available to everyone and so these could not be adviced as a solution to a problem.
Proposed by me approach will produce executables with following properties:
- a single executable of about 8 Mbytes in size (this is for perl-5.10.0, earlier versions could be smaller)
- required modules will be statically built into this executable (including Tcl/Tk)
- this executable will have ZIP content inside it, whith all needed Perl and Tcl/Tk scripts. extraction from this ZIP will be done in-memory on the fly (when required).
- GUI is done with Tcl::Tk CPAN module, with Tcl/Tk of version 8.5.3. Starting from 8.5.0, Tk on linux has much more attractive look-n-feel (compared to Tk8.4 on linux)
To mention, Tcl/Tk have similar approach of creating executables (starkit, tkkit). Also all major Common-LISP implementations have possibility to produce single-file executable for easy distribution. Perl needs some efforts to be in par with both Lisp and Tcl.
A set of scripts to generate executables from existing programs will be created. Also, core Perl modules should be prepared for static linkage, and this part could require changes into the Perl core itself.
On average I will spend every day for two hours implementing required functionality and will complete windows part within 7 weeks and linux part within another 3 weeks.
I have experience of Perl programming for more than 10 years, my CPAN ID is VKON. I also have experience in this particular area, i.e. on distributing Perl-based GUI-enabled deliverable executables based on about 5 files without temporaries.
I would like to ask $2500 for windows and $1000 for linux parts of the project, so having $3500 in total.