Binmoji: a 64-Bit Emoji Encoding
Posted3 months agoActive3 months ago
github.comTechstory
supportivepositive
Debate
20/100
Emoji EncodingBinary DataOpen-Source
Key topics
Emoji Encoding
Binary Data
Open-Source
Binmoji is a proposed 64-bit emoji encoding that has garnered interest on GitHub, with the community discussing its potential applications and limitations.
Snapshot generated from the HN discussion
Discussion Activity
Light discussionFirst comment
9d
Peak period
5
Day 10
Avg / period
5
Key moments
- 01Story posted
Oct 14, 2025 at 7:51 PM EDT
3 months ago
Step 01 - 02First comment
Oct 24, 2025 at 2:11 AM EDT
9d after posting
Step 02 - 03Peak activity
5 comments in Day 10
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 24, 2025 at 4:54 AM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45586374Type: storyLast synced: 11/20/2025, 3:10:53 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
This is a ticking time bomb. Good luck getting folks using this standard to implement this properly when this eventually happens. If this is the contingency for a collision, then a massive non-hash-based list of every combination was probably a better solution to begin with.
Edit: On second look, I'm not sure if binmoji is working properly? The component hash lookup table seems way too short to cover even a fraction of possible combinations, and it doesn't seem like it can properly roundtrip emojis such as this diverse family emoji: https://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%91%A8...
[1] https://unicode.org/emoji/charts/emoji-counts.html
I've not had enough coffee to deeply understand this, some parts seem like magic and I'm not sure if the hashing is sufficient.
Anyway, I am eminently nerd-snipable when it comes to reviewing C code, so here are a few comments. Do with them as you wish obviously.
1. C89 is an interesting and slightly depressing choice, it would be interesting to hear one platform where this library would be relevant that lacks at least a C99-compliant compiler.
2. On that note, I don't think `uint32_t` and friends are in C89, so that's a bit strange. Many compilers seem to allow it anyway, but then your code is no longer C89-compliant, of course.
3. I think the constant `num_hash_entries` pollutes the global namespace, it's not `static` and has no prefix.
4. In the header there is the `USER_FLAG_MASK` which is static, but will also clobber any application-defined symbol of the same name. Consider prefixing it.
4. In general please consider writing
as: it's less error-prone (since it "locks" the cleared size to the actual type of the variable used) while being shorter and typographically less involved.5. The repeated bitwise-OR:ing in `binmoji_encode()` has extra parentheses on each of the lines.
6. Awesome to see use of `bsearch()` to reduce risk of binary-search bugs.