Hi Everyone!
I am pleased to announce version 2.2.0 of cookit - tclkit-like Tcl
runtime environment with Tcl 8.6.15 and Tcl 9.0.0 with a focus on a
balance between functionality and executable size
Homepage and downloads are on github: https://github.com/chpock/cookit
Here is just a basic description of it. All details can be found on the website home page.
Please fill free to check/build/use it. Any feedback is welcome!
=====================================================================
Cookit is a Tcl/Tk runtime environment similar to tclkit with a focus
on a balance between functionality and executable size. It allows using Tcl/Tk in both console mode and graphical mode to run Tcl scripts, as
well as packaging applications into a single executable without
external dependencies.
Cookit is a single executable file that contains:
* Tcl/Tk version 8.6.15 (with Threads enabled) or 9.0.0
* Statically linked packages: cookfs, tclvfs, Threads, tclmtls, tdom,
twapi (for Windows platform)
* Other packages: tkcon
Supported platforms:
* Linux x86 / x86_64
* Windows x86 / x86_64
* macOS x86_64
This means that Cookit can be easily and simply used to develop both
console and GUI applications, which can be multi-threaded, send HTTPS requests to third-party services, process the received JSON/XML
response with tdom. For debugging in GUI mode a convenient and uniform
on all platforms console tkcon is available. After development, the application can be packaged into a single executable file without dependencies and used in other environments as a standalone application.
It can also be used as a replacement for tclsh/wish.
At the same time, the executable file has minimal size.
* for Linux platform: executable file without Tk - about 1.1MB,
executable file with Tk - about 1.7MB
* for Windows platform: executable without Tk - about 1.5MB,
executable with Tk - about 2MB.
This is an amazing size considering the ability to create GUI
applications with support for SSL/TLS connections, work with JSON/XML documents, extensive access to WinAPI using twapi on Windows platform.
In normal installations, only the size of the OpenSSL library will be 2
times larger.
As a use case, consider an internal installer that works in both
console and GUI mode and contains the same code for all platforms. This installer uses the REST GitHub API via HTTPS to get information about
the latest available release, uses tdom to parse the JSON response,
downloads a platform-appropriate tar.gz archive from GitHub releases
using HTTPS, mounts the resulting tar.gz archive using tclvfs and
extracts the necessary files to the destination directory.
Looking quite exciting and plan to check it out over the weekend.
Some initial questions -
- Am I right that because the packages (tdom, twapi) are statically
linked, the shared libraries do not need to be written to disk before loading? That would be a big win.
- It would be nice to have sqlite3, if not TDBC.
- I did not understand the section about the installer. If it is a
single file exe, why the installer?
- The wiki cookit page references the old repository.
Hi Everyone!
I am pleased to announce version 2.2.0 of cookit - tclkit-like Tcl
runtime environment with Tcl 8.6.15 and Tcl 9.0.0 with a focus on a
balance between functionality and executable size
Homepage and downloads are on github: https://github.com/chpock/cookit
Here is just a basic description of it. All details can be found on the website home page.
Please fill free to check/build/use it. Any feedback is welcome!
=====================================================================
Cookit is a Tcl/Tk runtime environment similar to tclkit with a focus
on a balance between functionality and executable size. It allows using Tcl/Tk in both console mode and graphical mode to run Tcl scripts, as
well as packaging applications into a single executable without
external dependencies.
Cookit is a single executable file that contains:
* Tcl/Tk version 8.6.15 (with Threads enabled) or 9.0.0
* Statically linked packages: cookfs, tclvfs, Threads, tclmtls, tdom,
twapi (for Windows platform)
* Other packages: tkcon
Supported platforms:
* Linux x86 / x86_64
* Windows x86 / x86_64
* macOS x86_64
This means that Cookit can be easily and simply used to develop both
console and GUI applications, which can be multi-threaded, send HTTPS requests to third-party services, process the received JSON/XML
response with tdom. For debugging in GUI mode a convenient and uniform
on all platforms console tkcon is available. After development, the application can be packaged into a single executable file without dependencies and used in other environments as a standalone application.
It can also be used as a replacement for tclsh/wish.
At the same time, the executable file has minimal size.
* for Linux platform: executable file without Tk - about 1.1MB,
executable file with Tk - about 1.7MB
* for Windows platform: executable without Tk - about 1.5MB,
executable with Tk - about 2MB.
This is an amazing size considering the ability to create GUI
applications with support for SSL/TLS connections, work with JSON/XML documents, extensive access to WinAPI using twapi on Windows platform.
In normal installations, only the size of the OpenSSL library will be 2
times larger.
As a use case, consider an internal installer that works in both
console and GUI mode and contains the same code for all platforms. This installer uses the REST GitHub API via HTTPS to get information about
the latest available release, uses tdom to parse the JSON response,
downloads a platform-appropriate tar.gz archive from GitHub releases
using HTTPS, mounts the resulting tar.gz archive using tclvfs and
extracts the necessary files to the destination directory.
Just one question: is unwrappable or not?
Reading the docs I can't see an option to unwrap the cookit, Can you confirm? And... that would be ok from my point of view, better than tclkits/starkits. What about the "safety" of the code obfuscation?
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 991 |
Nodes: | 10 (0 / 10) |
Uptime: | 120:10:48 |
Calls: | 12,958 |
Files: | 186,574 |
Messages: | 3,265,650 |