I wanted a tiny scriptable meltdown proof way to run userspace programs
and visualize how program execution impacts memory. It helps to explain
how things like Actually Portable Executable works. It can show you how
the GCC generated code is going about manipulating matrices and more. I
didn't feel fully comfortable with Qemu and Bochs because I'm not smart
enough to understand them. I wanted something like gVisor but with much
stronger levels of assurances. I wanted a single binary that'll run, on
all major operating systems with an embedded GPL barrier ZIP filesystem
that is tiny enough to transpile to JavaScript and run in browsers too.
https://justine.storage.googleapis.com/emulator625.mp4
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
LZ4(1) Cosmopolitan User Commands -*-text-*-
๐๐๐๐๐น๐๐ฐ - lz4, unlz4, lz4cat - Compress or decompress .lz4 files
๐๐๐๐๐๐๐๐๐น๐๐ฐ [OฬฒPฬฒTฬฒIฬฒOฬฒNฬฒSฬฒ] [-|INPUT-FILE] OฬฒUฬฒTฬฒPฬฒUฬฒTฬฒ-ฬฒFฬฒIฬฒLฬฒEฬฒ
๐๐ป๐น๐๐ฐ is equivalent to ๐น๐๐ฐ -๐ฑ๐น๐๐ฐ๐ฐ๐ฎ๐ is equivalent to ๐น๐๐ฐ -๐ฑ๐ฐ๐ณ๐บ
When writing scripts that need to decompress files, it is recomโ
mended to always use the name ๐น๐๐ฐ with appropriate arguments (๐น๐๐ฐ
-๐ฑ or ๐น๐๐ฐ -๐ฑ๐ฐ) instead of the names ๐๐ป๐น๐๐ฐ and ๐น๐๐ฐ๐ฐ๐ฎ๐.
๐๐๐๐๐๐๐๐๐๐๐๐น๐๐ฐ is an extremely fast lossless compression algorithm, based on
๐ฏ๐๐๐ฒ-๐ฎ๐น๐ถ๐ด๐ป๐ฒ๐ฑ๐๐๐ณ๐ณ family of compression scheme. ๐น๐๐ฐ offers comโ
pression speeds of 400 MB/s per core, linearly scalable with
multi-core CPUs. It features an extremely fast decoder, with
speed in multiple GB/s per core, typically reaching RAM speed
limit on multi-core systems. The native file format is the .๐น๐๐ฐ
format.
๐๐ถ๐ณ๐ณ๐ฒ๐ฟ๐ฒ๐ป๐ฐ๐ฒ๐ฏ๐ฒ๐๐๐ฒ๐ฒ๐ป๐น๐๐ฐ๐ฎ๐ป๐ฑ๐ด๐๐ถ๐ฝ๐น๐๐ฐ supports a command line syntax similar bฬฒuฬฒtฬฒ nฬฒoฬฒtฬฒ iฬฒdฬฒeฬฒnฬฒtฬฒiฬฒcฬฒaฬฒlฬฒ to
๐ด๐๐ถ๐ฝ(๐ญ). Differences are :
ยท ๐น๐๐ฐ preserves original files
ยท ๐น๐๐ฐ compresses a single file by default (see -๐บ for multiple
files)
ยท ๐น๐๐ฐ๐ณ๐ถ๐น๐ฒ๐ญ๐ณ๐ถ๐น๐ฒ๐ฎ means : compress file1 iฬฒnฬฒtฬฒoฬฒ file2
ยท ๐น๐๐ฐ๐ณ๐ถ๐น๐ฒ.๐น๐๐ฐ will default to decompression (use -๐ to force
compression)
ยท ๐น๐๐ฐ shows real-time notification statistics during compresโ
sion or decompression of a single file (use -๐พ to silence
them)
ยท If no destination name is provided, result is sent to ๐๐๐ฑ๐ผ๐๐
eฬฒxฬฒcฬฒeฬฒpฬฒtฬฒ iฬฒfฬฒ sฬฒtฬฒdฬฒoฬฒuฬฒtฬฒ iฬฒsฬฒ tฬฒhฬฒeฬฒ cฬฒoฬฒnฬฒsฬฒoฬฒlฬฒeฬฒ.
ยท If no destination name is provided, ๐ฎ๐ป๐ฑ if ๐๐๐ฑ๐ผ๐๐ is the conโ
sole, ๐ณ๐ถ๐น๐ฒ is compressed into ๐ณ๐ถ๐น๐ฒ.๐น๐๐ฐ.
ยท As a consequence of previous rules, note the following examโ
ple : ๐น๐๐ฐ๐ณ๐ถ๐น๐ฒ | ๐ฐ๐ผ๐ป๐๐๐บ๐ฒ๐ฟ sends compressed data to ๐ฐ๐ผ๐ป๐๐๐บ๐ฒ๐ฟ
through ๐๐๐ฑ๐ผ๐๐, hence it does nฬฒoฬฒtฬฒ create ๐ณ๐ถ๐น๐ฒ.๐น๐๐ฐ.
ยท Another consequence of those rules is that to run ๐น๐๐ฐ under
๐ป๐ผ๐ต๐๐ฝ, you should provide a destination file: ๐ป๐ผ๐ต๐๐ฝ๐น๐๐ฐ๐ณ๐ถ๐น๐ฒ๐ณ๐ถ๐น๐ฒ.๐น๐๐ฐ, because ๐ป๐ผ๐ต๐๐ฝ writes the specified commandยดs output
to a file.
Default behaviors can be modified by opt-in commands, detailed
below.
ยท ๐น๐๐ฐ -๐บ makes it possible to provide multiple input filenames,
which will be compressed into files using suffix .๐น๐๐ฐ.
Progress notifications are also disabled by default (use -๐
to enable them). This mode has a behavior which more closely
mimics ๐ด๐๐ถ๐ฝ command line, with the main remaining difference
being that source files are preserved by default.
ยท Similarly, ๐น๐๐ฐ -๐บ -๐ฑ can decompress multiple *.๐น๐๐ฐ files.
ยท Itยดs possible to opt-in to erase source files on successful
compression or decompression, using --๐ฟ๐บ command.
ยท Consequently, ๐น๐๐ฐ -๐บ --๐ฟ๐บ behaves the same as ๐ด๐๐ถ๐ฝ.
๐๐ผ๐ป๐ฐ๐ฎ๐๐ฒ๐ป๐ฎ๐๐ถ๐ผ๐ป๐ผ๐ณ .๐น๐๐ฐ๐ณ๐ถ๐น๐ฒ๐
It is possible to concatenate .๐น๐๐ฐ files as is. ๐น๐๐ฐ will decomโ
press such files as if they were a single .๐น๐๐ฐ file. For example:
lz4 file1 > foo.lz4
lz4 file2 >> foo.lz4
Then ๐น๐๐ฐ๐ฐ๐ฎ๐๐ณ๐ผ๐ผ.๐น๐๐ฐ is equivalent to ๐ฐ๐ฎ๐๐ณ๐ถ๐น๐ฒ๐ญ๐ณ๐ถ๐น๐ฒ๐ฎ.
๐๐๐๐๐๐๐๐๐ต๐ผ๐ฟ๐ ๐ฐ๐ผ๐บ๐บ๐ฎ๐ป๐ฑ๐ ๐ฐ๐ผ๐ป๐ฐ๐ฎ๐๐ฒ๐ป๐ฎ๐๐ถ๐ผ๐ป
In some cases, some options can be expressed using short command
-๐ or long command --๐น๐ผ๐ป๐ด-๐๐ผ๐ฟ๐ฑ. Short commands can be concateโ
nated together. For example, -๐ฑ -๐ฐ is equivalent to -๐ฑ๐ฐ. Long
commands cannot be concatenated. They must be clearly separated
by a space.
๐๐๐น๐๐ถ๐ฝ๐น๐ฒ ๐ฐ๐ผ๐บ๐บ๐ฎ๐ป๐ฑ๐
When multiple contradictory commands are issued on a same command
line, only the latest one will be applied.
๐๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐บ๐ผ๐ฑ๐ฒ
-๐ --๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐
Compress. This is the default operation mode when no operโ
ation mode option is specified, no other operation mode is
implied from the command name (for example, ๐๐ป๐น๐๐ฐ implies
--๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐), nor from the input file name (for example,
a file extension .๐น๐๐ฐ implies --๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐ by default). -๐
can also be used to force compression of an already comโ
pressed .๐น๐๐ฐ file.
-๐ฑ --๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐ --๐๐ป๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐
Decompress. --๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐ is also the default operation
when the input filename has an .๐น๐๐ฐ extension.
-๐ --๐๐ฒ๐๐
Test the integrity of compressed .๐น๐๐ฐ files. The decomโ
pressed data is discarded. No files are created nor
removed.
-๐ฏ# Benchmark mode, using # compression level.
๐๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐บ๐ผ๐ฑ๐ถ๐ณ๐ถ๐ฒ๐ฟ๐
-# Compression level, with # being any value from 1 to 12.
Higher values trade compression speed for compression
ratio. Values above 12 are considered the same as 12. Recโ
ommended values are 1 for fast compression (default), and
9 for high compression. Speed/compression trade-off will
vary depending on data to compress. Decompression speed
remains fast at all settings.
-๐ ๐ฑ๐ถ๐ฐ๐๐ถ๐ผ๐ป๐ฎ๐ฟ๐๐๐ฎ๐บ๐ฒ
Compress, decompress or benchmark using dictionary dฬฒiฬฒcฬฒtฬฒiฬฒoฬฒโฬฒ
nฬฒaฬฒrฬฒyฬฒNฬฒaฬฒmฬฒeฬฒ. Compression and decompression must use the same
dictionary to be compatible. Using a different dictionary
during decompression will either abort due to decompresโ
sion error, or generate a checksum error.
-๐ณ --[๐ป๐ผ-]๐ณ๐ผ๐ฟ๐ฐ๐ฒ
This option has several effects:
If the target file already exists, overwrite it without
prompting.
When used with --๐ฑ๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ฒ๐๐ and ๐น๐๐ฐ cannot recognize the
type of the source file, copy the source file as is to
standard output. This allows ๐น๐๐ฐ๐ฐ๐ฎ๐ --๐ณ๐ผ๐ฟ๐ฐ๐ฒ to be used
like ๐ฐ๐ฎ๐ (๐ญ) for files that have not been compressed with
๐น๐๐ฐ.
-๐ฐ --๐๐๐ฑ๐ผ๐๐ --๐๐ผ-๐๐๐ฑ๐ผ๐๐
Force write to standard output, even if it is the console.
-๐บ --๐บ๐๐น๐๐ถ๐ฝ๐น๐ฒ
Multiple input files. Compressed file names will be
appended a .๐น๐๐ฐ suffix. This mode also reduces notificaโ
tion level. ๐น๐๐ฐ -๐บ has a behavior equivalent to ๐ด๐๐ถ๐ฝ -๐ธ
(it preserves source files by default).
-๐ฟ operate recursively on directories. This mode also sets -๐บ
(multiple input files).
-๐# Block size [4-7](default : 7)
-๐๐ฐ= 64KB ; -๐๐ฑ= 256KB ; -๐๐ฒ= 1MB ; -๐๐ณ= 4MB
-๐๐ Block Dependency (improves compression ratio on small
blocks)
--๐ณ๐ฎ๐๐[=#]
switch to ultra-fast compression levels. If =# is not
present, it defaults to ๐ญ. The higher the value, the
faster the compression speed, at the cost of some compresโ
sion ratio. This setting overwrites compression level if
one was set previously. Similarly, if a compression level
is set after --๐ณ๐ฎ๐๐, it overrides it.
--[๐ป๐ผ-]๐ณ๐ฟ๐ฎ๐บ๐ฒ-๐ฐ๐ฟ๐ฐ
Select frame checksum (default:enabled)
--[๐ป๐ผ-]๐ฐ๐ผ๐ป๐๐ฒ๐ป๐-๐๐ถ๐๐ฒ
Header includes original size (default:not present)
Note : this option can only be activated when the original
size can be determined, hence for a file. It wonยดt work
with unknown source size, such as stdin or pipe.
--[๐ป๐ผ-]๐๐ฝ๐ฎ๐ฟ๐๐ฒ
Sparse mode support (default:enabled on file, disabled on
stdout)
-๐น Use Legacy format (typically for Linux Kernel compression)
Note : -๐น is not compatible with -๐บ (--๐บ๐๐น๐๐ถ๐ฝ๐น๐ฒ) nor -๐ฟ๐๐๐ต๐ฒ๐ฟ๐ผ๐ฝ๐๐ถ๐ผ๐ป๐
-๐ --๐๐ฒ๐ฟ๐ฏ๐ผ๐๐ฒ
Verbose mode
-๐พ --๐พ๐๐ถ๐ฒ๐
Suppress warnings and real-time statistics; specify twice
to suppress errors too
-๐ต -๐ --๐ต๐ฒ๐น๐ฝ
Display help/long help and exit
-๐ --๐๐ฒ๐ฟ๐๐ถ๐ผ๐ป
Display Version number and exit
-๐ธ --๐ธ๐ฒ๐ฒ๐ฝ
Preserve source files (default behavior)
--๐ฟ๐บ Delete source files on successful compression or decomโ
pression
-- Treat all subsequent arguments as files
๐๐ฒ๐ป๐ฐ๐ต๐บ๐ฎ๐ฟ๐ธ ๐บ๐ผ๐ฑ๐ฒ
-๐ฏ# Benchmark file(s), using # compression level
-๐ฒ# Benchmark multiple compression levels, from b# to e#
(included)
-๐ถ# Minimum evaluation time in seconds [1-9] (default : 3)
๐๐๐๐
Report bugs at: https://github.com/lz4/lz4/issues
๐๐๐๐๐๐
Yann Collet
lz4 1.8.3 September 2018 LZ4(1)