Skip to content

Releases: vsariola/pakettic

v1.4.0

05 May 13:59
Compare
Choose a tag to compare

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.
  • 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
    of string.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 as not e

v1.3.1

09 Jan 08:29
Compare
Choose a tag to compare

Fixed

  • Parentheses are not needed when indexing calls e.g. (a()).foo can be
    a().foo
  • Parentheses are needed in string literal method calls e.g. in ("abc"):sub(2)
  • Parse error when --{ looks like subtraction followed negated table
    constant

v1.3.0

20 Aug 14:38
Compare
Choose a tag to compare

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 to function()end, as
    the load'' 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 or and could give an parse
    error; for example, in x=1 orange=2 the first statement was parsed
    as x=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
    numeral 1.

v1.2.0

02 Apr 12:07
Compare
Choose a tag to compare

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.