HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
PackOrganization
Pack
Pascal2024–2024
PackOrganization / Pack

Pack

Pack

4Distinct people
6Mentions
0Explicit recommenders
261GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Pack

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by 6-hour interval6 dated mentions

Observed mentions: 2024-03-22 19:48:09 UTC to 2024-03-30 07:23:06 UTC.

0122024-03-22 18:00:00 UTC to 2024-03-23 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsMar 22, 18:002024-03-23 00:00:00 UTC to 2024-03-23 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-23 06:00:00 UTC to 2024-03-23 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-23 12:00:00 UTC to 2024-03-23 18:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-03-23 18:00:00 UTC to 2024-03-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-24 00:00:00 UTC to 2024-03-24 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-24 06:00:00 UTC to 2024-03-24 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-24 12:00:00 UTC to 2024-03-24 18:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-03-24 18:00:00 UTC to 2024-03-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-25 00:00:00 UTC to 2024-03-25 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-25 06:00:00 UTC to 2024-03-25 12:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-03-25 12:00:00 UTC to 2024-03-25 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-25 18:00:00 UTC to 2024-03-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-26 00:00:00 UTC to 2024-03-26 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-26 06:00:00 UTC to 2024-03-26 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-26 12:00:00 UTC to 2024-03-26 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMar 26, 12:002024-03-26 18:00:00 UTC to 2024-03-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-27 00:00:00 UTC to 2024-03-27 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-27 06:00:00 UTC to 2024-03-27 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-27 12:00:00 UTC to 2024-03-27 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-27 18:00:00 UTC to 2024-03-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-28 00:00:00 UTC to 2024-03-28 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-28 06:00:00 UTC to 2024-03-28 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-28 12:00:00 UTC to 2024-03-28 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-28 18:00:00 UTC to 2024-03-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-29 00:00:00 UTC to 2024-03-29 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-29 06:00:00 UTC to 2024-03-29 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-29 12:00:00 UTC to 2024-03-29 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-29 18:00:00 UTC to 2024-03-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-30 00:00:00 UTC to 2024-03-30 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-30 06:00:00 UTC to 2024-03-30 12:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMar 30, 06:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Mar 22, 18:002024-03-22 18:00:00 UTC2024-03-23 00:00:00 UTC202
Mar 23, 00:002024-03-23 00:00:00 UTC2024-03-23 06:00:00 UTC000
Mar 23, 06:002024-03-23 06:00:00 UTC2024-03-23 12:00:00 UTC000
Mar 23, 12:002024-03-23 12:00:00 UTC2024-03-23 18:00:00 UTC101
Mar 23, 18:002024-03-23 18:00:00 UTC2024-03-24 00:00:00 UTC000
Mar 24, 00:002024-03-24 00:00:00 UTC2024-03-24 06:00:00 UTC000
Mar 24, 06:002024-03-24 06:00:00 UTC2024-03-24 12:00:00 UTC000
Mar 24, 12:002024-03-24 12:00:00 UTC2024-03-24 18:00:00 UTC101
Mar 24, 18:002024-03-24 18:00:00 UTC2024-03-25 00:00:00 UTC000
Mar 25, 00:002024-03-25 00:00:00 UTC2024-03-25 06:00:00 UTC000
Mar 25, 06:002024-03-25 06:00:00 UTC2024-03-25 12:00:00 UTC101
Mar 25, 12:002024-03-25 12:00:00 UTC2024-03-25 18:00:00 UTC000
Mar 25, 18:002024-03-25 18:00:00 UTC2024-03-26 00:00:00 UTC000
Mar 26, 00:002024-03-26 00:00:00 UTC2024-03-26 06:00:00 UTC000
Mar 26, 06:002024-03-26 06:00:00 UTC2024-03-26 12:00:00 UTC000
Mar 26, 12:002024-03-26 12:00:00 UTC2024-03-26 18:00:00 UTC000
Mar 26, 18:002024-03-26 18:00:00 UTC2024-03-27 00:00:00 UTC000
Mar 27, 00:002024-03-27 00:00:00 UTC2024-03-27 06:00:00 UTC000
Mar 27, 06:002024-03-27 06:00:00 UTC2024-03-27 12:00:00 UTC000
Mar 27, 12:002024-03-27 12:00:00 UTC2024-03-27 18:00:00 UTC000
Mar 27, 18:002024-03-27 18:00:00 UTC2024-03-28 00:00:00 UTC000
Mar 28, 00:002024-03-28 00:00:00 UTC2024-03-28 06:00:00 UTC000
Mar 28, 06:002024-03-28 06:00:00 UTC2024-03-28 12:00:00 UTC000
Mar 28, 12:002024-03-28 12:00:00 UTC2024-03-28 18:00:00 UTC000
Mar 28, 18:002024-03-28 18:00:00 UTC2024-03-29 00:00:00 UTC000
Mar 29, 00:002024-03-29 00:00:00 UTC2024-03-29 06:00:00 UTC000
Mar 29, 06:002024-03-29 06:00:00 UTC2024-03-29 12:00:00 UTC000
Mar 29, 12:002024-03-29 12:00:00 UTC2024-03-29 18:00:00 UTC000
Mar 29, 18:002024-03-29 18:00:00 UTC2024-03-30 00:00:00 UTC000
Mar 30, 00:002024-03-30 00:00:00 UTC2024-03-30 06:00:00 UTC000
Mar 30, 06:002024-03-30 06:00:00 UTC2024-03-30 12:00:00 UTC101

What Hacker News says

6 sources
The `pack`[0] compression utility that reached the HN front page the other day[1] is setting off my alarm bells right now. (It was at the time too, but now doubly so) It's written in Pascal, and the only (semi-)documented way to build it yourself is to use a graphical IDE, and pull in pre-compiled library binaries (stored in the git repo of a dependency which afaict Pack is the only dependent of - appears to be maintained by the same pseudonymous author but from a different account). I've opened an issue[2] outlining my concerns. I'm certainly not accusing them of having backdoored binaries, but if I was setting up a project to be deliberately backdoorable, it'd look a lot like this. [0] https://pack.ac/ [1] https://news.ycombinator.com/item?id=39793805 [2] https://github.com/PackOrganization/Pack/issues/10
In Backdoor in upstream xz/liblzma leading to SSH server compromise
Easy to build using this document: https://pack.ac/source Each binary has its own build script that you can use for yourself. Binaries are used for static builds and to ease future needs. https://github.com/PackOrganization/Pack/blob/main/Libraries... I know you don't have a duty to look around for your answer, but you too don't have a duty to say yuck to a project that has been done with a lot of effort. I am ok with your comment, but maybe go easy on the next project.
In Pack: A new container format for compressed files
it’s not safe to disable SQLite’s thread safety as you do here: https://github.com/PackOrganization/Pack/blob/main/Libraries... and then do your own locking. You attempt to pass the flag at open time to enable serialized mode, however quoting the SQLite docs for the build flag you set: Note that when SQLite is compiled with SQLITE_THREADSAFE=0, the code to make SQLite threadsafe is omitted from the build. When this occurs, it is impossible to change the threading mode at start-time or run-time. SQLite’s APIs are often hazardous in these ways, it really should be erroring rather than silently ignoring the fullmutex flag, but alas.
In Pack: A new container format for compressed files
Hello David, and thank you for your comment, analysis, and the issues you opened. I will get to them all. - SQLite tooling: You will not need it unless you are debugging something, then you can change the header or just use the `--activate-other-options --transform-to-sqlite3` parameter to transform a Pack file to SQLite3, and use the `--activate-other-options --transform-to-pack` to go back. This way, you get a true SQLite3 database that you can browse as you wish. For most people, mixing Pack with SQLite was just a call for problems for the SQLite team (imagine people coming and asking to fix their Pack file from the team; that would not be fair) and a harder future for Pack to update. - Metadata is not stored in Pack. I don’t want the metadata of my machine attached to a file. It’s a never-ending nightmare to match source and destinati
Read the rest
on OS metadata. There will always be something missing, and Pack tends to get everything perfect or nothing. Storing metadata adds extra weight that most users don’t care about and complicates the ability to store other types of data alongside files. It may get added as an option in the future if many people need it. - There is a version field. It is currently in Draft 0, and it is written using a custom VFS. Look here for more information: https://github.com/PackOrganization/Pack/blob/main/Source/Dr... - All future versions of Pack must handle previous versions and must only write the latest version. So any files created right now (Draft 0) will be read correctly for ever to come. - Each Draft proposal will get its own version, and if it gets final, it will be set to final. - Two byte after 'Pack' header in little endian as (1 (Draft) shl 13 + 0 (version 0) = 8192). Final would be 0, so the first Final version will be 0 shl 13 + 1 = 1. and the second will be 2. It is by design, so any Draft version gets a higher number, preventing future mixups. - 8 MB chunks are the default; Pack may choose smaller or bigger (16 MB for many small files or 32 MB for Hard Press). - Random access is proper as unpacking steps take into account what you want and decompress a Content just once for many neighbouring files. But even for reading just one file, here is an example: if I want to extract just a .c file from the whole codebase of Linux, it can be done (on my machine) in 30 ms, compared to near 500 ms for WinRAR or 2500 ms for tar.gz. And it will just worsen when you count encryption. For now, Pack encryption is not public, but when it is, you can access a file in a locked Pack file in a matter of milliseconds rather than seconds.
In Pack: A new container format for compressed files
Often new things are met with an excess of skepticism but I agree here. I'd take this more seriously if the format was documented at all, but so far it appears to be "this implementation relies on sqlite and zstd therefore it's better", without even a specification of the sql schema, let alone anything else. The github repo contains precompiled binaries of zstd and sqlite. The sqlite builds appear to have thread support disabled so not only will it be single writer it'll be single reader too. The schema is missing strictly typed tables, and the implementation appears to lack explicit collation handling for names and content. The described benchmark appears to involve files with an average size of 16KB. I suspect it was executed on Windows on top of NTFS with an AV package running, which is a pathological case for single threaded use of th
Read the rest
e POSIXy IO APIs that undoubtedly most of the selected implementations use. It's slightly odd that it appears to perform better when SQLite is being built with thread safety disabled (https://github.com/PackOrganization/Pack/blob/main/Libraries...) and yet the implementation is inserting in a thread group: https://github.com/PackOrganization/Pack/blob/main/Source/Dr.... I suspect the answer here is that because the implementation is using a thread group to read files and compress chunks, it's amortizing the slow cost of file opens in this benchmark using threading, but is heavily constrained by the sqlite locking - and the compression ratio will take a substantial hit in some cases as a result of the limited range of each compression operation. I suspect that zstd(1) with -T0 would outperform this for speed and compression ratio, and it's already installed on a lot of systems - even Windows 11 gained native support for .zst files recently. The premise that we could do with something more portable than TAR and with less baggage is somewhat reasonable - we probably could do with a simple, safe format. There are a lot more key considerations to making such a format good, such as many you outline, such as choices around seeking, syncing, incremental updates, compression efficiency, parallelism, etc. There is no single set of trade-offs to cover all cases but it would be possible to make a file format that can be shared among them, while constraining the design somewhat for safety and ease of portability.
In Pack: A new container format for compressed files

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.