Releases: vsariola/pakettic
Releases · vsariola/pakettic
v1.4.0
Added
- Parallel processing: mutations and their costs are computed on several
processes simultaneously. This results in approx. 2-3x faster packing of
files. Parameter-q
controls the processing queue length; this is the
maximum number of solutions being explored simultaneously. Defaults to 12, but
you can try increasing it if you have a lot of cores.-P
controls the number
of parallel processes in a pool, defaults to number of cores and can be
usually left unchanged.-q1 -P1
is identical to the old behavior. - Reading PNG-carts and writing fake PNG-like carts. The advantage of PNG-like
carts is that all data chunks can be compressed too, so can be useful for 512b- 64k intros. The disadvantage is that additional 16-bytes of headers are
needed. Choose this output format with-fpng
. The file ending is still .tic,
but TIC-80 sees the magic bytes and detects them as PNGs.
- 64k intros. The disadvantage is that additional 16-bytes of headers are
- Shuffling data chunks during packing. This works only with PNG-like carts, as
only they support compressing the entire cart. - Loading .lua carts with multiple banks.
- Command line parameter
-s0
means iterate forever. Intermediate results are
saved, as always.
Changed
- The output format is defined with -f e.g.
-flua
,-fpng
,-func
, or
-ftic
. The-u
and-l
options have been DEPRECATED. If an output file is
defined, pakettic tries guessing the desired output format based on the file
extension of the output file. - Size optimized the code generated by
--data-to-code
: use:gmatch
instead
ofstring.gmatch
Fixed
- When packing multiple files, the initial minification of subsequent files
continued using variable names from where the previous files had stopped. - Parse error:
note
was parsed asnot e
v1.3.1
v1.3.0
Added
- Option
--data-to-code
(or just-d
) that puts the data in
hexadecimal strings in the code and adds a small stub to load the data
in the string at right address - Option
--no-load
to disable using the load trick altogether.
load''
is not entirely semantically identical tofunction()end
, as
theload''
cannot access local variables in the outer scope.
However, this is such a rare occurrence that only disable it when
absolutely necessary.
Changed
- Parse errors report the offending line more accurately
Fixed
- Printing function calls with a single table or string parameter
- Local variables without immediate assignment crashed the parser
- The initial minification used reserved keywords (in particular:
or
) - Handling carts with multiple CODE chunks
- Variable names that started with
or
orand
could give an parse
error; for example, inx=1 orange=2
the first statement was parsed
asx=1 or ange
, followed by=1
which gave the parse error. - Escaping
\r
and\f
in quoted string literals -- {
was not considered comment, even though it was not considered
permutation block either- Add space between a numeral and following period when printing. For
example,1 ..2
(string concatenation) should not be printed as
1..2
, as LUA then parses the beginning of it as floating point
numeral1.
v1.2.0
Added
- Perform initial variable minification before starting optimization
- Constant folding: constant integer expressions are evaluated by
pakettic, in case they compresses better - More detailed reporting of the crunching results
Fixed
- Spaces between tokens were not always printed even when needed
- Hex numbers with fractional digits had the fractional digits printed in reverse
- Hex numbers with an exponent raised an error when printed
Changed
- The default compression level is now -z0; our benchmarking does not
show significant advantage over -z2 (only 0.2% over the test corpus),
yet it's almost 3 times slower. Use -z2 and higher only when you are
desperate and absolutely need that last byte.