{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":429907564,"defaultBranch":"main","name":"mcap","ownerLogin":"foxglove","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-11-19T19:09:38.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/78454435?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726859718.0","currentOid":""},"activityList":{"items":[{"before":"f8a2e33ee23a9711417a77d3ad61baf40236fa76","after":null,"ref":"refs/heads/achim/fg-8667-mcap-stream-parsing-error","pushedAt":"2024-09-20T19:15:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"achim-k","name":"Hans-Joachim Krauch","path":"/achim-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9250155?s=80&v=4"}},{"before":"0f156d95a95debe88c0ccb49c8be64f6ea4547fb","after":"8f35ee03b5921de869e2e9ac3475689f731cab1a","ref":"refs/heads/main","pushedAt":"2024-09-20T19:15:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"achim-k","name":"Hans-Joachim Krauch","path":"/achim-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9250155?s=80&v=4"},"commit":{"message":"TypeScript: Reuse Reader for stream reader (#1236)\n\n### Changelog\r\nTypescript: Performance improvements for readers\r\n\r\n### Docs\r\nNone\r\n\r\n### Description\r\nReintroduces the changes made in #1212, which have been reverted in\r\n#1227, with an additional fix & test (separate commit) for the buffer\r\nappend logic. The original code of #1212 removed the `streamBuffer`\r\nobject and implemented the buffer append ing logic directly in the\r\n`McapStreamReader` class. The append logic had a bug which caused\r\nexisting data to be partially overridden by new data.\r\n\r\n\r\n\r\nFrom #1212:\r\n\r\n> Reduces `McapStreamReader` heap usage by ~25% and boosts throughput by\r\n~30%.\r\n>\r\n> This is both a refactor and perf boost, with more room for\r\nimprovement, key changes:\r\n> - Removes StreamBuffer, hoisted into McapStreamReader\r\n> - Reuses Reader and DataView class across parse calls, only resetting\r\nthem when necessary (e.g: append in McapStreamReader)\r\n> - Splits `parseRecord` into small scoped parsing functions, this\r\nitself is perf neutral (slightly positive) but facilitates future\r\nmonomorphic fast paths\r\n> - Moves offsets tracking into Reader which is cleaner and faster\r\n>\r\n> ### Before\r\n>\r\n> ```\r\n> McapStreamReader\r\n> 3.48±0.03 op/s Heap Used: 49.56±12.75 MB/op Heap Total: 41.47±11.83\r\nMB/op ArrayBuffers: 112.95±6.87 MB/op\r\n> McapIndexedReader\r\n> 2.15±0.02 op/s Heap Used: 70.02±2.84 MB/op Heap Total: 58.34±3.36\r\nMB/op ArrayBuffers: 17.86±0.76 MB/op\r\n> McapIndexedReader_reverse\r\n> 2.18±0.01 op/s Heap Used: 59.92±2.86 MB/op Heap Total: 39.81±1.00\r\nMB/op ArrayBuffers: 14.58±1.42 MB/op\r\n> ```\r\n> \r\n> ### After\r\n> \r\n> ```\r\n> McapStreamReader\r\n> 4.47±0.08 op/s Heap Used: 42.35±2.23 MB/op Heap Total: 32.93±3.76\r\nMB/op ArrayBuffers: 105.93±12.19 MB/op\r\n> McapIndexedReader\r\n> 2.38±0.02 op/s Heap Used: 72.00±1.70 MB/op Heap Total: 55.12±2.51\r\nMB/op ArrayBuffers: 17.86±1.85 MB/op\r\n> McapIndexedReader_reverse\r\n> 2.38±0.02 op/s Heap Used: 63.41±1.55 MB/op Heap Total: 39.33±0.53\r\nMB/op ArrayBuffers: 18.40±1.60 MB/op\r\n> ```\r\n\r\n---------\r\n\r\nCo-authored-by: Aaron O'Mullan ","shortMessageHtmlLink":"TypeScript: Reuse Reader for stream reader (#1236)"}},{"before":"e1010cb1d8455006ccf97bc2b396b41eeff2f872","after":null,"ref":"refs/heads/jrms/bump-go-version-v1.6","pushedAt":"2024-09-18T01:02:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"}},{"before":"e591defaa95186cef27e37c49fa7e1f0c9f2e8a6","after":"0f156d95a95debe88c0ccb49c8be64f6ea4547fb","ref":"refs/heads/main","pushedAt":"2024-09-18T01:02:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"bump go version to v1.6.0 (#1237)\n\n### Changelog\r\n\r\n\r\n### Docs\r\n\r\n\r\n\r\n### Description\r\n\r\n\r\n\r\n\r\n\r\n
BeforeAfter
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n","shortMessageHtmlLink":"bump go version to v1.6.0 (#1237)"}},{"before":"9e633429dbfe0d3b01d78012b584d7f98980a360","after":"f8a2e33ee23a9711417a77d3ad61baf40236fa76","ref":"refs/heads/achim/fg-8667-mcap-stream-parsing-error","pushedAt":"2024-09-17T15:46:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"achim-k","name":"Hans-Joachim Krauch","path":"/achim-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9250155?s=80&v=4"},"commit":{"message":"comments","shortMessageHtmlLink":"comments"}},{"before":null,"after":"e1010cb1d8455006ccf97bc2b396b41eeff2f872","ref":"refs/heads/jrms/bump-go-version-v1.6","pushedAt":"2024-09-17T00:06:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"bump go version to v1.6.0","shortMessageHtmlLink":"bump go version to v1.6.0"}},{"before":"823c04f4a1dcb37063d8a3c1b2ad1fbabcf2cfdb","after":null,"ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-16T23:59:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"}},{"before":"c67c6328eff14193c21762466912ef890255a54a","after":"e591defaa95186cef27e37c49fa7e1f0c9f2e8a6","ref":"refs/heads/main","pushedAt":"2024-09-16T23:59:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"go: indexed message iterator: guard against bad offsets in file (#1234)\n\n### Changelog\r\n\r\n- if a file contains offsets that point outside of file bounds, the Go\r\nindexed reader implementation will return `mcap.ErrBadOffset` when\r\nattempting to use them.\r\n\r\n### Docs\r\n\r\nNone.\r\n### Description\r\n\r\nThere are files being uploaded to Foxglove that have invalid offsets\r\ninside them - these cause errors in `io.Seek`, which can't be told apart\r\nfrom true IO errors at the moment. This means if a read fails, we can't\r\ntell if it's because of a corrupt file or flaky I/O. This PR lets us\r\ndisambiguate by returning a specific error from the library.\r\n\r\n\r\n\r\n\r\n
BeforeAfter
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n","shortMessageHtmlLink":"go: indexed message iterator: guard against bad offsets in file (#1234)"}},{"before":"77d542bc7d48817d94dd9f929db2f0537ac22b66","after":null,"ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-15T11:35:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"}},{"before":"6a2fe3553d0a5aa66f2634fa70a8c606780f8e0c","after":"c67c6328eff14193c21762466912ef890255a54a","ref":"refs/heads/main","pushedAt":"2024-09-15T11:35:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"rust: add async reading functionality (#1211)\n\n### Changelog\r\n- rust: switches the LZ4 compression dependency from `lz4_flex` to\r\n`lz4-rs`. This moves us from using a pure-rust lz4 implementation to C\r\nbindings. I believe this is worthwhile because `lz4_flex` does not\r\nsupport LZ4 \"high compression mode\". The practical reason for doing so\r\nin this PR is that `lz4_flex` does not expose interfaces that make it\r\neasy to build an AsyncRead adapter for it, but `lz4-rs` does.\r\n- rust: Adds structs to read MCAP data asynchronously in a linear\r\nstream.\r\n\r\n### Docs\r\n\r\n- Check generated rust docs for review.\r\n\r\n\r\n### Description\r\nAdds an async `RecordReader`implementation, for reading MCAP data\r\nasynchronously. This is an optional feature, named `tokio`. I chose this\r\nfeature flag name and this module name because this functionality is\r\ntied heavily into the Tokio ecosystem. If at some point we rebuild this\r\nto be async-executor-agnostic, we can add that functionality under a new\r\nmodule and feature flag name.\r\n\r\n\r\n\r\n\r\n\r\n
BeforeAfter
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n","shortMessageHtmlLink":"rust: add async reading functionality (#1211)"}},{"before":"c5b48e233eafd26e0f6c4cbad5b62d8dc3fbc217","after":"77d542bc7d48817d94dd9f929db2f0537ac22b66","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-15T11:26:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"remove byteorder dep","shortMessageHtmlLink":"remove byteorder dep"}},{"before":"6854c862228c84acd2a96d7ac14165ae7f0908ed","after":"c5b48e233eafd26e0f6c4cbad5b62d8dc3fbc217","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-15T11:06:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"add a non-full read test","shortMessageHtmlLink":"add a non-full read test"}},{"before":"e0de798f0616de7abbddfba08fc1e60854de369f","after":"823c04f4a1dcb37063d8a3c1b2ad1fbabcf2cfdb","ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-15T06:33:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"remove debug logging","shortMessageHtmlLink":"remove debug logging"}},{"before":"986022f48842954514eb9c7a909f691e3c4a07f3","after":"6854c862228c84acd2a96d7ac14165ae7f0908ed","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-13T12:00:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"check builds for wasm32","shortMessageHtmlLink":"check builds for wasm32"}},{"before":"c9a4179d4452598527eda069d1d68a2c330b5191","after":"986022f48842954514eb9c7a909f691e3c4a07f3","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-13T11:58:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"update to lz4 v1.27","shortMessageHtmlLink":"update to lz4 v1.27"}},{"before":"a7aac1359554199265001585e0bbc11eab900725","after":"6a2fe3553d0a5aa66f2634fa70a8c606780f8e0c","ref":"refs/heads/main","pushedAt":"2024-09-12T17:53:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"defunctzombie","name":"Roman Shtylman","path":"/defunctzombie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84792?s=80&v=4"},"commit":{"message":"docs: specify units for `log_time` and `publish_time` (#1235)","shortMessageHtmlLink":"docs: specify units for log_time and publish_time (#1235)"}},{"before":"67a7d9e23685809f81507779164b34377569706c","after":"9e633429dbfe0d3b01d78012b584d7f98980a360","ref":"refs/heads/achim/fg-8667-mcap-stream-parsing-error","pushedAt":"2024-09-12T11:03:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"achim-k","name":"Hans-Joachim Krauch","path":"/achim-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9250155?s=80&v=4"},"commit":{"message":"Fix incorrect buffer append logic, add test","shortMessageHtmlLink":"Fix incorrect buffer append logic, add test"}},{"before":null,"after":"67a7d9e23685809f81507779164b34377569706c","ref":"refs/heads/achim/fg-8667-mcap-stream-parsing-error","pushedAt":"2024-09-12T10:45:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"achim-k","name":"Hans-Joachim Krauch","path":"/achim-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9250155?s=80&v=4"},"commit":{"message":"Fix incorrect buffer append logic, add test","shortMessageHtmlLink":"Fix incorrect buffer append logic, add test"}},{"before":"7b096d5574f0a3cb07bd366ccd5eb43b0d90d04e","after":"e0de798f0616de7abbddfba08fc1e60854de369f","ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-12T04:06:02.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"add test","shortMessageHtmlLink":"add test"}},{"before":"451ab0fdd12d14a92d86931a0711a056949fb2aa","after":"7b096d5574f0a3cb07bd366ccd5eb43b0d90d04e","ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-12T04:01:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"add test","shortMessageHtmlLink":"add test"}},{"before":"fb386a02579b1b27a6cf3d62bb659549d6eaf8eb","after":"451ab0fdd12d14a92d86931a0711a056949fb2aa","ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-12T03:58:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"add test","shortMessageHtmlLink":"add test"}},{"before":null,"after":"fb386a02579b1b27a6cf3d62bb659549d6eaf8eb","ref":"refs/heads/jrms/go-bad-seek","pushedAt":"2024-09-12T01:30:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"go: indexed message iterator: guard against bad offsets in file","shortMessageHtmlLink":"go: indexed message iterator: guard against bad offsets in file"}},{"before":"cc53dbd9b9c08be0a2e7c35077f20861c64e5db7","after":"c9a4179d4452598527eda069d1d68a2c330b5191","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-11T05:10:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"tokio/read.rs: do not save opcodes in test","shortMessageHtmlLink":"tokio/read.rs: do not save opcodes in test"}},{"before":"31877c666deca1b6bf56c84e81604614cb6881a6","after":"cc53dbd9b9c08be0a2e7c35077f20861c64e5db7","ref":"refs/heads/jrms/rust-async","pushedAt":"2024-09-11T05:09:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"james-rms","name":null,"path":"/james-rms","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/18162835?s=80&v=4"},"commit":{"message":"lz4: clarify and comment on async reader","shortMessageHtmlLink":"lz4: clarify and comment on async reader"}},{"before":"13ef02e1a18ef3209042f19f62e6c1625b0606a3","after":null,"ref":"refs/heads/bahram/slack-to-discord","pushedAt":"2024-09-04T01:28:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"banisadr","name":"Bahram Banisadr","path":"/banisadr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12058745?s=80&v=4"}},{"before":"1a5cc293325f44d64de2f5a0914c68ca4ce91f85","after":"a7aac1359554199265001585e0bbc11eab900725","ref":"refs/heads/main","pushedAt":"2024-09-04T01:28:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"banisadr","name":"Bahram Banisadr","path":"/banisadr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12058745?s=80&v=4"},"commit":{"message":"Updating references & links from slack to discord (#1232)\n\n### Changelog\r\nUpdating references from community slack to community discord.\r\n\r\n### Docs\r\n\r\nNone\r\n\r\n### Description\r\n\r\n* Links updated to point to https://foxglove.dev/chat\r\n* \"Slack channel\" etc. references updated to \"Discord community\" etc.","shortMessageHtmlLink":"Updating references & links from slack to discord (#1232)"}},{"before":null,"after":"13ef02e1a18ef3209042f19f62e6c1625b0606a3","ref":"refs/heads/bahram/slack-to-discord","pushedAt":"2024-09-03T22:43:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"banisadr","name":"Bahram Banisadr","path":"/banisadr","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12058745?s=80&v=4"},"commit":{"message":"updating references & links from slack to discord","shortMessageHtmlLink":"updating references & links from slack to discord"}},{"before":"08afaa5250a3baa249000d2c2db71074e8eb3e48","after":null,"ref":"refs/heads/roman/bump-version","pushedAt":"2024-08-30T18:34:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jtbandes","name":"Jacob Bandes-Storch","path":"/jtbandes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14237?s=80&v=4"}},{"before":"ed894e7b15ff7e1a5c379e0450157734517b7062","after":"1a5cc293325f44d64de2f5a0914c68ca4ce91f85","ref":"refs/heads/main","pushedAt":"2024-08-30T18:34:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jtbandes","name":"Jacob Bandes-Storch","path":"/jtbandes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/14237?s=80&v=4"},"commit":{"message":"Bump @mcap/core version (#1228)\n\n### Changelog\r\nRevert of performance improvements which broke stream reading.\r\n\r\n### Docs\r\nNone\r\n\r\n### Description\r\nWe needed to revert performance improvements\r\nhttps://github.com/foxglove/mcap/pull/1227 which broke stream reading.","shortMessageHtmlLink":"Bump @mcap/core version (#1228)"}},{"before":"825aadb9342bd3c29952112cbeda306f601a85c2","after":null,"ref":"refs/heads/revert-1212-perf/parse-record-reader-reuse","pushedAt":"2024-08-30T18:29:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"defunctzombie","name":"Roman Shtylman","path":"/defunctzombie","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84792?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yMFQxOToxNToxOC4wMDAwMDBazwAAAAS8TAnA","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yMFQxOToxNToxOC4wMDAwMDBazwAAAAS8TAnA","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0zMFQxODoyOTo0Mi4wMDAwMDBazwAAAASo8cxe"}},"title":"Activity · foxglove/mcap"}