Show HN: Micro LZMA decoder (x86 assembly code golf)

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • micro-lzmadec

    Micro LZMA decoder

  • RegPack

    Self-contained packer for size-constrained JS code

    I love these tiny decoders, even if their use cases are limited. To me this is as much art as programming.

    For Javascript I ran into these two recently:

    Tiny LZW(ish) encoder/decoder. The decoder is 141 bytes: https://gist.github.com/mr5z/d3b653ae9b82bb8c4c2501a06f3931c...

    RegPack, a non-standard encoding, but an awesome approach for small chunks (1-4KByte is ideasl) of self contained compressed code, using regular expressions for decoding: https://github.com/Siorki/RegPack

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • Crinkler

    Crinkler is an executable file compressor (or rather, a compressing linker) for compressing small 32-bit Windows demoscene executables. As of 2020, it is the most widely used tool for compressing 1k/4k/8k intros.

    Crinkler [1] is a popular compressor-linker for 1--8 KB demos and its decompressor (partially embedded in a PE header) is probably around 1--200 bytes. Later efforts like oneKpaq [2] also have a comparable decompressor size.

    If you don't mind a shameless plug and a slightly larger decompressor (about 500 bytes in JS) for better compression, my Roadroller [3] might fit the bill as well.

    [1] https://github.com/runestubbe/Crinkler

    [2] https://github.com/temisu/oneKpaq

    [3] https://lifthrasiir.github.io/roadroller/

  • roadroller

    Roadroller: Flattens Your JavaScript Demo

    Crinkler [1] is a popular compressor-linker for 1--8 KB demos and its decompressor (partially embedded in a PE header) is probably around 1--200 bytes. Later efforts like oneKpaq [2] also have a comparable decompressor size.

    If you don't mind a shameless plug and a slightly larger decompressor (about 500 bytes in JS) for better compression, my Roadroller [3] might fit the bill as well.

    [1] https://github.com/runestubbe/Crinkler

    [2] https://github.com/temisu/oneKpaq

    [3] https://lifthrasiir.github.io/roadroller/

  • oneKpaq

    PPM compressor with a 128 bytes short decompressor

    Crinkler [1] is a popular compressor-linker for 1--8 KB demos and its decompressor (partially embedded in a PE header) is probably around 1--200 bytes. Later efforts like oneKpaq [2] also have a comparable decompressor size.

    If you don't mind a shameless plug and a slightly larger decompressor (about 500 bytes in JS) for better compression, my Roadroller [3] might fit the bill as well.

    [1] https://github.com/runestubbe/Crinkler

    [2] https://github.com/temisu/oneKpaq

    [3] https://lifthrasiir.github.io/roadroller/

  • upx

    UPX - the Ultimate Packer for eXecutables

    I looked at the latest version of UPX, they began to use LZMA, if this is considered an LZMA decoder:

    https://github.com/upx/upx/blob/devel/src/stub/src/arch/amd6...

    Then it takes ~2500 bytes, mine is ~500 (static version). But the decompression speed for larger code should be higher, as I noticed.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts