Repository navigation
Releases
Releases · TomerAberbach/profiler-md
v0.9.0
What's Changed
- fix(origins): parse each profiler's placeholder path in its origin by @TomerAberbach in #543
- chore(ruby): capture rbspy inputs on Ruby 3.4 and rbspy 0.51 by @TomerAberbach in #557
- fix(cli): treat ENOTCONN as a closed reader when writing the output by @TomerAberbach in #558
- feat(ruby): profile a Rails app and pair its compiled templates across runs by @TomerAberbach in #559
- refactor(cli): rename highlight.ts to highlight-markdown.ts by @TomerAberbach in #560
- chore(deps): bump Optique to 1.2.3 by @TomerAberbach in #561
- feat(cli): lead the help with a synopsis and examples by @TomerAberbach in #562
- feat(cli): follow an invocation error with the synopsis by @TomerAberbach in #563
- docs(skills): require a spike before a redesign when optimizing by @TomerAberbach in #565
- feat(cli): print the brief help only when a bare invocation's stdout is a terminal by @TomerAberbach in #564
- feat(cli): color the help in the Kindling theme by @TomerAberbach in #566
- refactor(intern): replace HashSink with pure HASH_SEED and mixHash by @TomerAberbach in #567
- perf(cli): stop spreading globalThis into the non-TTY Ansis options by @TomerAberbach in #568
- feat(python): add py-spy --function inputs by @TomerAberbach in #570
- perf(jfr): read a stack trace as its method keys and leaf line by @TomerAberbach in #569
- perf(call-stack-profile): attribute function and frame pair totals in one pass by @TomerAberbach in #573
- refactor(formats): put the format ID on each converter and derive the registry from a list by @TomerAberbach in #574
- feat(python): add tachyon inputs by @TomerAberbach in #572
- feat(options): add a logger and log the format detection by @TomerAberbach in #571
- test: fail a test only on unasserted warn or error lines by @TomerAberbach in #576
- feat(c): add simpleperf inputs by @TomerAberbach in #577
- docs(claude): add the files the structure tree omitted by @TomerAberbach in #578
- feat(jvm): add async-profiler collapsed inputs with threads, ann, and sig by @TomerAberbach in #579
- feat(origins): log the resolved origin and its evidence by @TomerAberbach in #575
- feat(python): add memray --native inputs by @TomerAberbach in #580
- feat(javascript): add @datadog/pprof inputs with line numbers by @TomerAberbach in #582
- fix(c): capture systing inputs with systing 1.13 by @TomerAberbach in #583
- feat(format): log the inferred base URL by @TomerAberbach in #581
- feat(source-map): report what the source maps mapped per generated file by @TomerAberbach in #584
- feat(api): strip gzip, brotli, and LZ4 compression in the library by @TomerAberbach in #586
- chore: update knip config by @TomerAberbach in #588
- perf(helpers): decompress LZ4 frames incrementally by @TomerAberbach in #589
- perf(memray): read a capture in one incremental pass by @TomerAberbach in #585
- fix(inputs): stop JFR recording the environment and process list by @TomerAberbach in #591
- fix(inputs): generate inputs in a shell without the host environment by @TomerAberbach in #592
- fix(inputs): redact the Safari recordings' network entries by @TomerAberbach in #593
- chore(inputs): regenerate the JVM and JavaScript inputs by @TomerAberbach in #594
- feat(inputs): check inputs for data about the generating machine by @TomerAberbach in #595
- feat(cli): add --log-level for diagnostics on stderr by @TomerAberbach in #596
- feat(cli): warn about --source-maps patterns and maps that match nothing by @TomerAberbach in #597
- feat(cli): separate log lines from the Markdown on a shared terminal by @TomerAberbach in #599
- chore(lint): allow a hint on an indented continuation line by @TomerAberbach in #600
- refactor: pass a wrapped error as a cause instead of embedding its message by @TomerAberbach in #601
- refactor(formats): carry a rejection's format on the error and list rejections under the message by @TomerAberbach in #602
- refactor: state a log line's decision in its prefix and its evidence at debug by @TomerAberbach in #598
- chore(cli): upgrade Optique to 1.3.0 and use what it now provides by @TomerAberbach in #603
- chore(deps): upgrade dependencies and group every size like a count by @TomerAberbach in #604
- refactor(frames): record each frame position under its semantic by @TomerAberbach in #605
- fix(memray): leave the executing line unknown without a line table by @TomerAberbach in #606
- fix(pprof): give a function with an empty filename no location by @TomerAberbach in #607
- fix(speedscope): read the py-spy and rbspy exporters as origin hints by @TomerAberbach in #608
- feat(webkit): accept the current timeline export layout by @TomerAberbach in #609
- feat(inputs): check the compressed streams an input embeds by @TomerAberbach in #610
- perf(inputs): speed up the input privacy check by @TomerAberbach in #611
- feat(cli): state invalid flag values in this CLI's error style by @TomerAberbach in #613
- feat(nix): support the Nix evaluator's profiler by @TomerAberbach in #612
- docs(origins): link the pprof emitters' bugs and state the principle by @TomerAberbach in #614
- chore: cut comments that restate the code by @TomerAberbach in #615
- fix(excimer): detect collapsed stacks without a closure frame by @TomerAberbach in #616
- fix(excimer): locate a namespaced function by its namespace by @TomerAberbach in #617
- feat(heap-snapshot): key constructors by name and location by @TomerAberbach in #619
- feat(cli): warn about regex flags that change nothing by @TomerAberbach in #618
- feat(jvm): add async-profiler collapsed alloc and dot inputs by @TomerAberbach in #623
- fix(origins): strip more per-run addresses and IDs from match keys by @TomerAberbach in #633
- fix(diff): pair entries by their own names before their match keys by @TomerAberbach in #634
- fix(markdown): escape control characters as control pictures by @TomerAberbach in #635
- chore: move origin hint reasons into their branches by @TomerAberbach in #636
- feat(formats): let parsers record skipped records and cut-short inputs by @TomerAberbach in #637
- feat(formats): record the truncations and skips parsers recover from by @TomerAberbach in #639
- fix(pprof): reject truncated input and keep samples the spec allows by @TomerAberbach in #640
- fix(v8-cpu-profile): reject samples without matching time deltas by @TomerAberbach in #641
- docs: state which checks a parser adds by @TomerAberbach in #642
- fix(speedscope): check frame indices and weights against samples by @tome...
v0.8.1
What's Changed
- docs: update cli help output by @TomerAberbach in #541
- fix(pprof): treat a negative line as unknown by @TomerAberbach in #544
- fix(v8-heap-snapshot): treat an element index out of range as unknown by @TomerAberbach in #545
- fix(cli): clamp the help width to what the terminal reports by @TomerAberbach in #546
- fix: reject invalid options with a stated reason by @TomerAberbach in #547
- fix(cli): check the --output path before converting the input by @TomerAberbach in #548
- refactor: share one reasonOf between the CLI and the pipeline by @TomerAberbach in #549
- refactor: split the conversion pipeline by stage by @TomerAberbach in #550
- fix: report a decoding failure as the specified format's rejection by @TomerAberbach in #552
- fix: report an unclassified parse failure as unusable input by @TomerAberbach in #553
- fix(cli): report an unexpected error as a bug by @TomerAberbach in #555
- fix(cli): write the output to stdout when the pager fails by @TomerAberbach in #551
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
- fix(cli): read a profile from a pipe path by @TomerAberbach in #531
- fix(cli): exit without an error when the reader closes the pipe by @TomerAberbach in #532
- feat(cli): accept auto for --format and --origin by @TomerAberbach in #533
- feat(go): categorize a -trimpath build's frames by @TomerAberbach in #534
- fix: decode invalid UTF-8 as replacement characters by @TomerAberbach in #535
- feat(excimer): convert collapsed stacks by @TomerAberbach in #536
- feat(node): add a heap profile of all allocations by @TomerAberbach in #537
- fix(jfr): weight a TLAB allocation event by its TLAB size by @TomerAberbach in #538
- refactor!: hyphenate multi-word category IDs by @TomerAberbach in #539
- fix(cli): report file access failures as CLI errors by @TomerAberbach in #540
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- refactor: small modality change by @TomerAberbach in #401
- docs: readme updates by @TomerAberbach in #402
- feat: improve diff highlighting by @TomerAberbach in #403
- refactor: internal format logic by @TomerAberbach in #404
- refactor: colocate testing utils by @TomerAberbach in #405
- refactor: move origin specs by @TomerAberbach in #406
- feat: support non-file URLs for
baseURL: 'auto'by @TomerAberbach in #408 - feat: merge emitter and origin concepts by @TomerAberbach in #409
- refactor: more readable formatting logic by @TomerAberbach in #410
- refactor: move some files closer to usage by @TomerAberbach in #426
- docs: add new-input skill by @TomerAberbach in #429
- docs: add logo by @TomerAberbach in #432
- chore: drop examples from publish by @TomerAberbach in #433
- feat: add groovy inputs by @TomerAberbach in #430
- perf: improve pprof parsing performance by @TomerAberbach in #435
- docs: restructure readme by @TomerAberbach in #436
- ci: improve perf by @TomerAberbach in #437
- chore: upgrade deps by @TomerAberbach in #438
- fix: move constructor name category to origin by @TomerAberbach in #439
- chore: address vulnerable dependencies by @TomerAberbach in #440
- refactor: rename frame concepts to stack frame by @TomerAberbach in #441
- test: more project concurrency by @TomerAberbach in #442
- refactor: hoist shared modality logic out of the profile module by @TomerAberbach in #443
- docs: add zig by @TomerAberbach in #444
- fix: categorize Zig toolchain sources as stdlib by @TomerAberbach in #445
- refactor: name modalities after what they capture by @TomerAberbach in #446
- docs: reword the gperftools --as-needed note by @TomerAberbach in #448
- refactor: drop provenance categorization from heap snapshots by @TomerAberbach in #447
- docs: state that a profiler's formats are the ones it writes by @TomerAberbach in #449
- fix: resolve a format with no matching origin to its canonical origin by @TomerAberbach in #450
- perf(test): run tests in the node environment by @TomerAberbach in #452
- perf: allocate resolved stack arrays with new Array by @TomerAberbach in #454
- perf: merge shown call stacks via HashInterner by @TomerAberbach in #455
- perf: reuse the previous line's interned frames in collapsed parsing by @TomerAberbach in #456
- ci: publish to npm and bump the Homebrew formula on a tag by @TomerAberbach in #457
- perf(test): use the threads pool without per-file isolation by @TomerAberbach in #458
- chore: bump dep by @TomerAberbach in #459
- perf: hoist HashInterner's append closure to a method by @TomerAberbach in #460
- perf: fast-path single-byte varints in JFR parsing by @TomerAberbach in #461
- feat: support Fortran profiles (#457) by @TomerAberbach in #462
- perf: memoize showEntry by function ID when merging shown call stacks by @TomerAberbach in #464
- perf(test): share a compile cache across spawned CLI processes by @TomerAberbach in #466
- perf(test): split oversized examples per variant and start big projec… by @TomerAberbach in #467
- docs: require parsing a format to its spec by @TomerAberbach in #468
- feat: support callgrind by @TomerAberbach in #453
- feat: support rbspy's callgrind export by @TomerAberbach in #469
- ci: no coverage by @TomerAberbach in #470
- feat: report why an input was rejected by @TomerAberbach in #463
- feat: mark hidden frames in a call stack with an ellipsis by @TomerAberbach in #471
- refactor!: close the function category set by @TomerAberbach in #472
- refactor: map a pseudo-frame label to its category by @TomerAberbach in #474
- refactor!: close the heap snapshot node category set by @TomerAberbach in #475
- feat(scripts): add pnpm check, which runs what CI runs by @TomerAberbach in #476
- refactor: add logical reference by @TomerAberbach in #347
- feat(scripts): add pnpm categories, which reports categorization by @TomerAberbach in #477
- test: require every category to be emitted or listed by @TomerAberbach in #478
- feat: support memray captures by @TomerAberbach in #473
- feat: support pyinstrument profiles by @TomerAberbach in #482
- perf(test): aggregate each input once in the origins suite by @TomerAberbach in #483
- perf(test): convert each input from one input type in the format suite by @TomerAberbach in #484
- perf(test): run the CLI over one input per compression scheme by @TomerAberbach in #485
- perf(test): give each input project a larger share of the inputs by @TomerAberbach in #486
- perf(examples): reuse compiled bytecode across the spawned CLI processes by @TomerAberbach in #487
- perf(check): run the checks in two lanes instead of one chain by @TomerAberbach in #488
- feat: display category names as prose by @TomerAberbach in #481
- perf(detect): bound the NUL scan to the first 4 KiB by @TomerAberbach in #490
- perf(jfr): cache pool resolution in the pool entry itself by @TomerAberbach in #491
- perf(jfr): decode all-numeric frame fields in a tight loop by @TomerAberbach in #493
- refactor(modalities): rename the sampling profile to the call stack profile by @TomerAberbach in #492
- perf(v8-heap-snapshot): decode the edges array once when building adjacency by @TomerAberbach in #494
- feat: break each ranking down by category by @TomerAberbach in #489
- perf(heap-snapshot): compute dominators with semi-NCA in DFS-index space by @TomerAberbach in #496
- perf(cli): decompress in 4 MiB chunks by @TomerAberbach in #497
- perf(examples): convert examples on a worker thread pool by @TomerAberbach in #498
- feat: break each call graph ranking down by category by @TomerAberbach in #495
- refactor(sampling-profile): model the observation count as a metric by @TomerAberbach in #480
- feat: support Swift profiles by @TomerAberbach in #501
- fix(pprof): name what a profile's counts count by @TomerAberbach in #500
- fix(jfr): name what each event kind's counts count by @TomerAberbach in #502
- feat(pprof): support the Go goroutine leak profile by @TomerAberbach in #503
- fix(eflambe): count eflambe's collapsed stacks as microseconds by @TomerAberbach in https://githu...
v0.6.0
What's Changed
- feat: support auto base URL by @TomerAberbach in #329
- feat(skill): explain reason to avoid manual timing by @TomerAberbach in #332
- docs: update CLAUDE.md by @TomerAberbach in #333
- chore: publish our skills by @TomerAberbach in #334
- refactor: lang alias handling by @TomerAberbach in #336
- feat: support --help by @TomerAberbach in #337
- chore: drop unused code by @TomerAberbach in #338
- feat: improve file errors by @TomerAberbach in #339
- feat: support systing by @josefbacik in #341
- feat: make highlighting robust by @TomerAberbach in #335
- feat: systing polish by @TomerAberbach in #345
- refactor: move metric module to src/ by @TomerAberbach in #346
- refactor: hoist shared profile logic out of src/profile for reuse by @TomerAberbach in #349
- feat: format custom metrics as bare counts in tables, counted unit nouns in prose by @TomerAberbach in #351
- chore: update CLAUDE.md by @TomerAberbach in #353
- chore: drop unnecessary excludes by @TomerAberbach in #354
- refactor: centralize format logic and metadata by @TomerAberbach in #355
- refactor: establish modality concept by @TomerAberbach in #356
- refactor: unify modality pipeline structure by @TomerAberbach in #357
- docs: update feature set by @TomerAberbach in #358
- chore: improve glossary by @TomerAberbach in #359
- docs: update format vs origin context by @TomerAberbach in #360
- refactor: move entry matching to origin by @TomerAberbach in #350
- test: run committed-input sweeps in per-format vitest projects by @TomerAberbach in #361
- perf: propagate call-stack metrics in one pass at aggregation time by @TomerAberbach in #362
- perf: store JFR stacks as method IDs plus leaf line by @TomerAberbach in #363
- perf: skip the JSON parse attempt for non-JSON prefixes by @TomerAberbach in #364
- chore: refine CLAUDE.md by @TomerAberbach in #365
- docs(cli): merge
--color/--no-colorin help by @TomerAberbach in #366 - docs: revise skills by @TomerAberbach in #367
- docs: revise language and format stuff by @TomerAberbach in #372
- fix: use base 2 size units by @TomerAberbach in #374
- fix: drop unnecessary api surface by @TomerAberbach in #376
- style: polish options code by @TomerAberbach in #379
- docs: update cli help by @TomerAberbach in #380
- refactor: formats index by @TomerAberbach in #381
- fix: occasional excessive byte precision by @TomerAberbach in #383
- docs: update converter.ts prose by @TomerAberbach in #384
- docs: update origins/origin.ts prose by @TomerAberbach in #388
- refactor: bunch of origin stuff by @TomerAberbach in #390
- test: add and revise some tests by @TomerAberbach in #392
- refactor: various type changes by @TomerAberbach in #394
- docs: update new-origin skill by @TomerAberbach in #395
- refactor: profile aggregation by @TomerAberbach in #398
- test: raise
test.proptimeout by @TomerAberbach in #399
New Contributors
- @josefbacik made their first contribution in #341
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- diffs: fix metric matching edge case by @TomerAberbach in #166
- pprof: fix go parsing by @TomerAberbach in #167
- location: add more normalization by @TomerAberbach in #168
- collapsed: allow stackless samples by @TomerAberbach in #169
- feat: async binary parsing by @TomerAberbach in #171
- format: init jfr by @TomerAberbach in #170
- refactor: rename
EntryOrigintoEntryCategory, folding(string & {})into the type by @TomerAberbach in #177 - fix(pprof): handle bigint IDs and drop dangling table references by @TomerAberbach in #247
- feat(jfr): native memory allocation profiling by @TomerAberbach in #248
- feat(jfr): detect recordings by magic, not event presence by @TomerAberbach in #249
- fix(jsc-heap-snapshot): accept all versions by @TomerAberbach in #250
- feat(profile): show "No profiling data found." for empty output by @TomerAberbach in #251
- docs(c): improve accuracy by @TomerAberbach in #253
- docs(csharp): improve accuracy by @TomerAberbach in #254
- docs(elixir): improve accuracy by @TomerAberbach in #255
- docs(go): improve accuracy by @TomerAberbach in #256
- docs(javascript): improve accuracy by @TomerAberbach in #257
- docs(julia): improve accuracy by @TomerAberbach in #258
- docs(php): improve accuracy by @TomerAberbach in #259
- docs(python): improve accuracy by @TomerAberbach in #260
- docs(ruby): improve accuracy by @TomerAberbach in #261
- feat: fixture-generation infrastructure by @TomerAberbach in #252
- build: delete checked in python fixture by @TomerAberbach in #262
- build: delete checked in json fixture by @TomerAberbach in #263
- feat: detect and override profile/snapshot origin by @TomerAberbach in #174
- perf: optimize sampling by @TomerAberbach in #265
- fix: refine diff output formatting by @TomerAberbach in #264
- perf(jfr): call stack dedupe by @TomerAberbach in #266
- perf(jfr): field parsing by @TomerAberbach in #267
- perf(jfr): stack trace parsing by @TomerAberbach in #268
- perf(jfr): optimize varint read by @TomerAberbach in #270
- perf(jfr): stack trace interning by @TomerAberbach in #271
- perf(profile): call stack interning by @TomerAberbach in #272
- test: reduce test times by @TomerAberbach in #273
- refactor(profile): unify formats with a uniform representation by @TomerAberbach in #275
- fix: match pprof files leading with any Profile field by @TomerAberbach in #276
- feat: add beam origin by @TomerAberbach in #277
- feat: add rbspy origin by @TomerAberbach in #278
- test: cover build-hash entry matching at the diff level by @TomerAberbach in #279
- fix: escape pipes in Markdown table cells by @TomerAberbach in #280
- fix: stop titling contention, wall, and unknown time profiles "CPU profile" by @TomerAberbach in #281
- fix(jfr): do not append a parameter list for async-profiler's
()L;sentinel descriptor by @TomerAberbach in #282 - fix(beam): split
module:functionframes into name and location by @TomerAberbach in #283 - feat(origins): add dotnet-trace origin and scaffolding-frame dropping by @TomerAberbach in #284
- fix(format): clamp sub-resolution percents to
<0.1%and~0%by @TomerAberbach in #285 - fix(format): note zero-total metrics and omit zero-valued call stacks by @TomerAberbach in #286
- fix: render sub-millisecond times in microseconds instead of 0ms by @TomerAberbach in #287
- fix: detect rbspy and py-spy origins in pprof and speedscope renderings by @TomerAberbach in #288
- fix: categorize Kotlin/Scala stdlib, JIT/GC stubs, and native frames in JVM profiles by @TomerAberbach in #290
- feat: add go origin with stdlib/third-party categorization by @TomerAberbach in #291
- feat: parse JFR live-object events into a retained heap profile by @TomerAberbach in #292
- fix: register mid-stack callers so directly-called external functions are not hidden by @TomerAberbach in #293
- fix: merge call stacks that render identically after entry filtering by @TomerAberbach in #294
- fix: match JVM lambda and JIT-adapter frames across runs by stripping runtime addresses by @TomerAberbach in #295
- fix: categorize OS system-directory sources as stdlib under the unknown origin by @TomerAberbach in #297
- fix: stop treating parenthesized function names as synthetic frame labels by @TomerAberbach in #298
- fix: pair same-key functions across diff sides instead of dropping them by @TomerAberbach in #299
- fix: reinterpret py-spy/rbspy speedscope frame lines as executing lines by @TomerAberbach in #300
- fix: read bun jsc-heap-snapshot edge names and types correctly by @TomerAberbach in #301
- fix: categorize Safari's bundled accessory scripts as stdlib by @TomerAberbach in #302
- feat: add pprof-jl origin with Julia stdlib/package categorization by @TomerAberbach in #303
- docs: sort origins by @TomerAberbach in #304
- docs: regenerate fixtures, examples, and the readme matrix under canonical names by @TomerAberbach in #305
- fix(v8-heap-profile): map raw VMState frame tags to the CPU profiler's lowercase labels by @TomerAberbach in #306
- fix(bun): categorize internal: module URLs as stdlib by @TomerAberbach in #307
- chore: increase timeouts by @TomerAberbach in #309
- chore: resolve security vulnerabilities by @TomerAberbach in #308
- fix(format): show all functions when the entry filter would empty a profile's sections by @TomerAberbach in #310
- fix(speedscope): keep empty-stack samples and their time by @TomerAberbach in #311
- fix(format): rename the "Progressions" heading to "Improvements" by @TomerAberbach in #314
- fix(pprof): use the count sample type as the sample count instead of record counts by @TomerAberbach in #315
- fix(beam): strip the Elixir. module prefix from locations by @TomerAberbach in #319
- fix(formats): treat non-positive and null sampled lines as unknown by @TomerAberbach in #320
- fix(node-pprof): unpack dd-trace's (anonymous:L#line:C#col) function names by @TomerAberbach in #321
- fix(format): note callee percentage overlap from recursion in caption by @TomerAberbach in #323
- fix(format): disambiguate duplicate metric column headers by @TomerAberbach in #324
- fix(format): properly escape markdown by @TomerAberbach in #32...
v0.4.0
What's Changed
- feat: --cwd -> --base-url by @TomerAberbach in #130
- chore: fix some claude setup by @TomerAberbach in #133
- refactor: reduce public API to
profileToMd/profileToMdAsyncby @TomerAberbach in #132 - chore: prevent bad publish by @TomerAberbach in #134
- chore: use
<unknown>when location is not known by @TomerAberbach in #135 - feat: support relative paths by @TomerAberbach in #136
- refactor: move
formatintodataparam by @TomerAberbach in #137 - refactor: unify format converters and split aggregation from formatting by @TomerAberbach in #138
- feat: programmatic profile diffing by @TomerAberbach in #131
- feat: programmatic snapshot diffing by @TomerAberbach in #139
- testing: extract test helpers per format by @TomerAberbach in #140
- refactor: standardize discriminators by @TomerAberbach in #141
- docs: tighten some prose by @TomerAberbach in #142
- feat: display the current side's name and location for matched diff entries by @TomerAberbach in #143
- feat: add
matchEntryoption for matching entries across diffed profiles by @TomerAberbach in #144 - feat: support
--matchin the CLI by @TomerAberbach in #145 - docs: generate diff examples from base/current fixture pairs by @TomerAberbach in #146
- feat: tint diff table rows red or green by relative delta in CLI output by @TomerAberbach in #147
- docs: reorder options by @TomerAberbach in #148
- docs: skill improvements by @TomerAberbach in #149
- docs: add base+current node cpuprofiles by @TomerAberbach in #150
- refactor: rename function by @TomerAberbach in #151
- docs: add heap snapshot diff example by @TomerAberbach in #152
- feat: remove redundant arrows by @TomerAberbach in #153
- feat: unify diff and non-diff table definitions by @TomerAberbach in #156
- feat: support collapsed stack format by @TomerAberbach in #159
- docs: more langs + features by @TomerAberbach in #160
- chore: upgrade deps (closes #128) by @TomerAberbach in #161
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- fix(go): naming for inuse vs alloc by @TomerAberbach in #95
- refactor: migrate to optique by @TomerAberbach in #94
- docs: shell completions by @TomerAberbach in #97
- feat: allow parsing arbitrary size json by @TomerAberbach in #99
- chore: fix claude.md project structure by @TomerAberbach in #101
- feat: add publish script to inline doc symlinks before packing by @TomerAberbach in #103
- refactor: extract claude hook by @TomerAberbach in #102
- docs: fix ci badge by @TomerAberbach in #105
- chore: update ci by @TomerAberbach in #106
- refactor: migrate to
ansiscolor detection by @TomerAberbach in #107 - feat: support webkit sampling profile by @TomerAberbach in #104
- chore: drop a rust example by @TomerAberbach in #108
- docs: add checklist for adding a new format by @TomerAberbach in #111
- chore: fix claude ci again by @TomerAberbach in #112
- refactor: extract shared heap snapshot abstraction into src/snapshot/ by @TomerAberbach in #109
- docs: update project structure and format checklist in CLAUDE.md by @TomerAberbach in #113
- refactor: simplify format wrappers to direct re-exports by @TomerAberbach in #114
- refactor: compose profile sections as string arrays by @TomerAberbach in #116
- test: refactor parameterized tests by @TomerAberbach in #115
- feat: support jsc heap snapshot by @TomerAberbach in #117
- refactor: summarize -> aggregate by @TomerAberbach in #120
- refactor:
Profile->AggregatedProfileby @TomerAberbach in #121 - refactor: create glossary by @TomerAberbach in #122
- refactor: rework categorization and showing api by @TomerAberbach in #123
- feat: filter external private code automatically by @TomerAberbach in #125
- test: overhaul format tests by @TomerAberbach in #126
- docs: improve table formatting by @TomerAberbach in #127
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- feat: rearchitect docs by @TomerAberbach in #80
- docs: add rust examples by @TomerAberbach in #86
- docs: reference examples from table by @TomerAberbach in #87
- refactor: split up cli code by @TomerAberbach in #88
- feat(cli): support pager by @TomerAberbach in #89
- feat(cli): improve pager experience by @TomerAberbach in #90
- feat(cli): fancy highlighting by @TomerAberbach in #91
Full Changelog: v0.1.3...v0.2.0
v0.1.3
What's Changed
- feat(source-map): support inline source maps by @TomerAberbach in #78
Full Changelog: v0.1.2...v0.1.3