HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
getsentry
rust-sourcemap
Rust2017–2018
getsentry / rust-sourcemap

rust-sourcemap

A library for rust that implements basic sourcemap handling

2Distinct people
2Mentions
0Explicit recommenders
248GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A library for rust that implements basic sourcemap handling

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, 6:01:08 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 week2 dated mentions

Observed mentions: 2017-11-09 08:08:18 UTC to 2018-01-19 01:29:25 UTC. Weeks start Monday, UTC.

012017-11-06 00:00:00 UTC to 2017-11-13 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 62017-11-13 00:00:00 UTC to 2017-11-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-11-20 00:00:00 UTC to 2017-11-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-11-27 00:00:00 UTC to 2017-12-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-04 00:00:00 UTC to 2017-12-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-11 00:00:00 UTC to 2017-12-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsDec 112017-12-18 00:00:00 UTC to 2017-12-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-25 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2018-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-08 00:00:00 UTC to 2018-01-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-15 00:00:00 UTC to 2018-01-22 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 15

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
Nov 62017-11-06 00:00:00 UTC2017-11-13 00:00:00 UTC101
Nov 132017-11-13 00:00:00 UTC2017-11-20 00:00:00 UTC000
Nov 202017-11-20 00:00:00 UTC2017-11-27 00:00:00 UTC000
Nov 272017-11-27 00:00:00 UTC2017-12-04 00:00:00 UTC000
Dec 42017-12-04 00:00:00 UTC2017-12-11 00:00:00 UTC000
Dec 112017-12-11 00:00:00 UTC2017-12-18 00:00:00 UTC000
Dec 182017-12-18 00:00:00 UTC2017-12-25 00:00:00 UTC000
Dec 252017-12-25 00:00:00 UTC2018-01-01 00:00:00 UTC000
Jan 12018-01-01 00:00:00 UTC2018-01-08 00:00:00 UTC000
Jan 82018-01-08 00:00:00 UTC2018-01-15 00:00:00 UTC000
Jan 152018-01-15 00:00:00 UTC2018-01-22 00:00:00 UTC101

What Hacker News says

1 sources
> Gigabytes of debug symbols? Such as fitting all in a 1/10 of RAM of a typical server you mean? I think this comments shows quite well why I like working on Sentry event processing so much :) You are not wrong in that "gigabytes of debug symbols" fit into RAM just fine. This is also most developer tool authors seem to think and again, they are not wrong. If you take a modern iOS app it will have enormous amounts of data in the DWARF files. Same goes with javascript webapps which are starting to accumulate larger and larger sourcemaps. All existing tools to the best of our knowledge assume that your debugging happens on a beefy desktop: you debug one or two apps at the time, you can take all the time in the world to preload the debug info files and off you go. However we're different. We're not handling a single app, we're handling t
Read the rest
ens of thousands of customers and their apps and websites. We can't just have all the debug info files resident at all times, they are too many. Likewise the events we get constantly are from vastly different versions. I don't have numbers right now but I guess we store terrabytes of debug data we use for processing. Shuffling this in and out and processing it quickly and efficiently required a non trivial amount of engineering to get working as efficiently as it does now. > Same about a source map. It’s not THAT hard to build a largish lookup table entirely in RAM. Especially if its the MAIN POINT of your business. Again, you are absolutely correct. However we used this loaded sourcemap for a fraction of a second. So turns out efficiently re-parsing it all the time with a centralized per-frame cache is actually more efficient than trying to keep the entire sourcemap in cache instead in the workers. There are a lot of subtleties you only discover when you get a lot of non uniform event data from real customers. > I’m curious about that non-linear problem with JSON source map. Could you elaborate? Sourcemaps are quite misdesigned. The only thing they can really do is token to token mapping. What they cannot tell you is the name or scope of variables if you need to reverse look them up. This is for instance an issue if you get tracebacks from minified function names. The approach we're using here is parsing the minified JavaScript source from the error location backwards in WTF-16 units, then compare that to the token we see in the unminified source and doing a reverse lookup. This requires (unless you build a custom file format which supports some sort of scope based token mapping based on a fully parsed JavaScript AST which we can't do for a variety of reasons, most of which are related to the fact that we need to fetch external sourcemaps and the time for building this custom lookup takes longer than doing a bounded token search) really fast reverse token lexing and seeking around in WTF-16 indexed but UTF-8 encoded source data. It's not tremendous amounts of work to implement (if you want to see how we do it, it lives here: https://github.com/getsentry/rust-sourcemap/blob/master/src/...) but it means that per frame where we need to inspect an original function name (which is typically about 50% of frames) we might step an indefinite amount of minified tokens back until we find "minified token prefixed with 'function'". We currently cap this search at 128 tokens and hope we find it. This seems to have been okay enough for now, but there are definitely long functions where this is not enough stepping. > Also you don’t need to cross-reference symbols/events across your customers. The lookup is thus limited to a shard of that client which I’d dare say won’t contain gigabytes of debug symbols. Ops can better attest to that but we're not huge fans of depending too much on pinning customers to single workers. It makes the entire system much harder to understand, requires running a much higher number of workers than we do and balances badly. We quite like the fact that we can scale pretty linearly with incoming traffic independent of who causes the events to come in.
In How Sentry Receives 20B Events per Month While Preparing to Handle Twice That

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.