- β
- β
- September 09, 2026
-
π modem-dev/hunk v0.22.0-beta.1 release
What's Changed
- feat(cli): show metadata for direct revision reviews by @benvinegar in #1064
- perf(test): make suite sharding configurable by @benvinegar in #1057
- perf(ci): parallelize validation lanes by @benvinegar in #1058
- perf(nix): skip unchanged lock generation by @benvinegar in #1059
- fix(update): avoid GitHub release rate limits by @benvinegar in #1069
- fix(ui): swap unified and split layout keys by @benvinegar in #1068
- chore(release): prepare v0.22.0-beta.1 by @benvinegar in #1070
- chore(release): include latest main in v0.22.0-beta.1 by @benvinegar in #1071
Full Changelog :
v0.22.0-beta.0...v0.22.0-beta.1 -
π smol-machines/smolvm smolvm v1.14.4 release
What's Changed
- Share active branch memory and guard host capacity by @BinSquare in #1204
- Write the release marker and identity files readable by the workload so a non-root machine can be branched by @BinSquare in #1205
- Reclaim idle branch leaf memory by @BinSquare in #1206
- Bump the workspace to 1.14.4 by @BinSquare in #1209
Full Changelog :
v1.14.3...v1.14.4
-
- September 08, 2026
-
π @binaryninja@infosec.exchange RE//verse 2027 tickets are LIVE! Trainings too! Round 1 is the cheapest mastodon
RE//verse 2027 tickets are LIVE! Trainings too! Round 1 is the cheapest pricing weβll offer, so grab your ticket before they sell out. See you in Orlando: https://re-verse.io
-
π @HexRaysSA@infosec.exchange π’ The 2026 IDA Plugin Contest is officially open! mastodon
π’ The 2026 IDA Plugin Contest is officially open!
Got an idea for a plugin that could make reverse engineering faster, smarter, or just more fun? Now's your shot. Submissions are open through November 30, with winners announced mid-January.
Build with C, C++, Python, or idalib. And since our SDK is now open-source, IDA Free users can jump in too.
Up for grabs: cash prizes up to $5K, free IDA licenses, recognition in the community, and more.
Full rules + prize breakdown: https://hex-rays.com/plugin- contest
-
π modem-dev/hunk v0.22.0-beta.0 release
Hunk 0.22 beta: history becomes a review workspace
Hunk 0.22 turns repository history into a responsive review workspace: browse commits, select contiguous ranges, carry review context into the diff, and leave precise threaded feedback without leaving the terminal.
hunk update 0.22.0-beta.0 npm install -g hunkdiff@0.22.0-beta.0Browse commits and review ranges
hunk lognow opens a responsive, themed history browser for Git and Jujutsu. Commits are grouped by day, optional graph lines preserve topology, and visual or Shift-based range selection opens the cumulative diff for a contiguous set of commits. History has configurable command bindings, merge-parent selection, and keeps your theme and diff preferences as you move between history and review. #979 #987 #1011 #1031 #1038 #1039Select and discuss exact code ranges
Persistent mouse and keyboard selections can now span multiple lines and drive explicit Comment, Copy, and Clear actions. Inline notes and replies participate in keyboard navigation, and agents can reply through the session CLI while inheriting the original code anchor. #931 #1012 #1044
Richer extension-powered reviews
Extensions can attach provider-neutral review metadata when delegating patches, expose that context to panes and live-session snapshots, and request a coalesced reload after an external agent changes reviewed files. The extension directory also adds
hunk-gh,hunk-viewed,hunk-history, andhunk-compact-filenav. #986 #988 #981 #995 #1034Faster, steadier terminal interaction
Long wrapped lines render and respond faster, pane animations are capped at 30 FPS and can be disabled, sidebar folders collapse without breaking navigation, suspended sessions resume cleanly, and direct-file reviews reload correctly outside repositories. #1043 #1051 #1036 #1009 #996 #1054
Compatibility notes
unifiedis now the canonical name for the single-column diff layout. ExistingstackCLI and configuration values remain accepted as deprecated aliases and normalize tounified.- Extension API v23 adds
canonicalModeandcanonicalLayout, which reportunified; legacy fields continue to reportstackfor compatibility. - OpenTUI integrations can use
canonicalLayout: "split" | "unified"; the legacylayout: "split" | "stack"prop remains source-compatible, andcanonicalLayoutwins when both are supplied. hunk logopens the interactive history browser when attached to a terminal. Use--staticfor scripted terminal output; pipes remain static.- Review commands now print static plain text instead of launching the TUI when stdout is not a terminal.
- The bundled runtime is upgraded to Bun 1.4.2.
Community contributors
- @samuela improved daemon health-probe failure reporting. #927
- @saadjs led the
stack-to-unifiedlayout transition while preserving compatibility. #945 - @any-victor added
hunk-historyto the extension directory. #995 - @HackAttack fixed suspended-job resume behavior. #996
- @rschoch added
hunk-compact-filenavto the extension directory. #1034
All merged pull requests
- test(website): cover stable changelog promotion by @benvinegar in #973
- feat(website): add VCS landing pages and sitemap alias by @benvinegar in #970
- Add hunk-gh, hunk-viewed to hunk-extension marketplace by @benvinegar in #981
- fix(pager): stop CPU pegging and truncation on large piped documents by @benvinegar in #978
- feat(extensions): show delegated review metadata by @benvinegar in #986
- feat(extensions): add review reload requests by @benvinegar in #988
- build: upgrade Bun to 1.4.2 by @benvinegar in #990
- feat: add static-first history browsing by @benvinegar in #979
- refactor(ui): share desktop chrome with history by @benvinegar in #983
- feat(ui): make history automatically responsive by @benvinegar in #987
- fix(ui): prepare history reviews before terminal handoff by @benvinegar in #989
- refactor(ui): keep history reviews in one renderer by @benvinegar in #992
- refactor: move hunkdiff into packages/hunk by @benvinegar in #997
- docs(website): list hunk-history in the extension directory by @any-victor in #995
- refactor(ui): route surfaces through one session runtime by @benvinegar in #998
- refactor(extensions): centralize session ownership by @benvinegar in #999
- fix(ui): keep suspended jobs alive upon fg by @HackAttack in #996
- feat(ui): collapse sidebar tree folders by @benvinegar in #1009
- test(ui): harden job control resume coverage by @benvinegar in #1010
- refactor: extract bundled Git provider by @benvinegar in #1001
- refactor: extract shared VCS infrastructure by @benvinegar in #1005
- refactor: extract bundled Jujutsu provider by @benvinegar in #1002
- refactor: extract bundled Sapling provider by @benvinegar in #1003
- feat(cli): support replies to review comments by @benvinegar in #1012
- feat(ui): group history by day by @benvinegar in #1011
- docs(architecture): refresh maintainer guidance by @benvinegar in #1013
- chore: organize repository scripts by @benvinegar in #1014
- fix(ui): save log view preferences by @benvinegar in #1015
- refactor(ui): use default diff row memo comparison by @benvinegar in #1017
- refactor(ui): inline diff row dispatch by @benvinegar in #1018
- refactor(ui): require planned diff rows by @benvinegar in #1019
- feat(ui): show history commit metadata in reviews by @benvinegar in #1016
- refactor(ui): make diff row dispatch exhaustive by @benvinegar in #1025
- refactor(ui): share diff row note targets by @benvinegar in #1026
- refactor(ui): clarify raw diff row planning by @benvinegar in #1027
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #966
- feat(dev): add disposable Firecracker shell by @benvinegar in #1030
- fix(cli): print static reviews without a tty by @benvinegar in #1029
- docs(video): require readable terminal commands by @benvinegar in #976
- fix(git): shorten SHAs in comparison titles by @benvinegar in #1035
- fix(keys): match alt across terminal protocols by @benvinegar in #991
- docs(website): list hunk-compact-filenav in the extension directory by @rschoch in #1034
- feat(ui): animate docked pane transitions by @benvinegar in #941
- fix(session): report daemon health probe failures by @samuela in #927
- feat(review): add multiline comment selections by @benvinegar in #931
- feat(log): review contiguous commit ranges by @benvinegar in #1031
- fix(ui): show info for comparison reviews by @benvinegar in #1032
- refactor(ui): extract diff selection controller by @benvinegar in #1037
- fix(ui): persist themes across routed surfaces by @benvinegar in #1040
- feat: rename the stack diff layout to unified by @saadjs in #945
- feat(history): add configurable command ids by @benvinegar in #1039
- perf(ui): cap pane animations at 30 fps by @benvinegar in #1036
- feat(log): add visual range selection by @benvinegar in #1038
- refactor(ui): normalize session theme startup by @benvinegar in #1041
- perf(ui): restore fast wrapped line rendering by @benvinegar in #1043
- feat(dev): preload fixtures in disposable VM shell by @benvinegar in #1042
- feat(install): add observable release proxy by @benvinegar in #969
- fix(ui): retain view preferences across history reviews by @benvinegar in #1045
- feat(review): make inline notes keyboard selectable by @benvinegar in #1044
- fix(ui): remove duplicate reply range connectors by @benvinegar in #1046
- fix(ui): save note drafts without stale input races by @benvinegar in #1050
- chore(git): internalize tree ref resolver by @benvinegar in #1052
- fix(watch): reload direct files outside repositories by @benvinegar in #1054
- fix(ui): keep wrapped diff interactions responsive by @benvinegar in #1051
- fix(release): support current prerelease metadata by @benvinegar in #1056
- chore(release): prepare v0.22.0-beta.0 by @benvinegar in #1061
Release notes : https://hunk.dev/changelog/0.22/
Full changelog :v0.21.1...v0.22.0-beta.0 -
π Barre/ZeroFS v2.3.3 release
-
π smol-machines/smolvm smolvm v1.14.3 release
What's Changed
- Run init as root on every path, and keep the image's USER for a packed workload by @BinSquare in #1190
- Open a machine to observe it without creating its disks or data directory by @BinSquare in #1197
- Add selectable block I/O engines by @BinSquare in #1198
- Honor a storage size below the template by shrinking the copied filesystem instead of rounding up by @BinSquare in #1199
- Bound live branch memory accounting by @BinSquare in #1200
- fix(network): prevent named-fabric receive busy loop by @scottatron in #1201
- Resolve a packed machine's launch from its manifest in one place by @BinSquare in #1150
- Pack machines with the entrypoint they were created with and the overlay they actually write to by @BinSquare in #1174
- Record the image's USER, or the Smolfile's user, in a pack made from an image so its workload keeps its account by @BinSquare in #1202
- Bump the workspace to 1.14.3 by @BinSquare in #1203
New Contributors
- @scottatron made their first contribution in #1201
Full Changelog :
v1.14.2...v1.14.3 -
π HexRaysSA/plugin-repository commits sync repo: +1 plugin, +1 release rss
sync repo: +1 plugin, +1 release ## New plugins - [BinaryLens](https://github.com/lumice/binarylens) (1.2.0) -
π r/Harrogate The coffee machines in Waitrose are still broken. rss
Just an FYI for those who look forward to their morning free coffee from Waitrose. Fingers crossed theyβll get them sorted soon π€πΌπ€πΌ
submitted by /u/Champion-Of-Midgard
[link] [comments] -
π jellyfin/jellyfin 12.0 release
π Release notes for 12.0
Notes on Updating
Before upgrading from an earlier version, a full backup of the data directory is strongly recommended, as this release includes database changes that prevent rolling back without a full restore.
Direct upgrades from 10.10.7 and 10.11.x to 12.0 are supported; intermediate upgrades are not required. Users running releases older than 10.10.7 are strongly encouraged to upgrade to 10.10.7 before migrating to 12.0.
Installed repository plugins (anything not built-in) should also be removed before migrating. Plugins will likely need time to adapt to the new database changes, so re-adding them afterward is the safest approach for testing.
Official plugins compatible with Jellyfin are available through the stable plugin repository. If you have changed to the unstable plugin repository please change it back.
- Go to Dashboard -> Plugins -> Manage Repositories
- Update the Plugin Repository URL to: https://repo.jellyfin.org/files/plugin/manifest.json
After migrating please perform the following steps.
- Perform a full library scan to restore alternative versions
If you run into issues, please prefix bug reports with "[12.0]".
Packaging
- Debian Bullseye and Ubuntu Focal packages are no longer built
Server
-
Performance PR implications #16062
- We're running a full path-based check on all library items to clean up left overs. Depending on size this can take some time
- Alternative versions of media that were auto resolved (not manually merged) will be removed due to data type issues -> A full library scan will fix this again and is therefore REQUIRED AFTER UPGRADE
- First scan will take significantly longer than normal and some movies might appear as newly added due to type issues that got fixed on-scan
-
Multiple versions for episodes
- Similarity & recommendation providers
- Search providers, letting plugins extend or replace how search results are produced
- SchedulesDirect and EPG refresh fixes
- Fixes to the parental rating system
- Proper data pruning on file replacement/deletion
- Support triple+ digit episode numbers
- Add library-specific BoxSet and Playlist filtering, allowing per-library collection and playlist views
CACHEDIR.tagsupportAccept-Languageheader support- Add VideoRotation profile condition for Android TVs that do not support rotation metadata
- Parse provider IDs from season and episode folder/file names
- Allow tmdb, tvdb, and imdb as aliases for the tmdbid, tvdbid, and imdbid provider IDs
- Add curly brace and parentheses support for parsing attribute values
- Add NameStartsWith and NameLessThan filters to Person search
- Add new filters for audio and subtitle languages
- Add OriginalLanguage as option to PreferredAudioLanguage
- Add a collection API for Included In feature
- Add support for VobSub subtitle streams
- Add Tmdb missing episode provider
Breaking and behavior changes
- Legacy route prefixes removed (
/emby/*and/mediabrowser/*). Old third-party clients that rely on them will stop working - Legacy authorization is now disabled by default, and a migration disables it on existing installs as well
- Removed obsolete API routes:
POST /Users/{userId}/EasyPassword(the EasyPassword feature is gone),GET /Items/{itemId}/CriticReviews,GET /Environment/NetworkShares,POST /System/MediaEncoder/Path,GET /LiveTv/Recordings/Groups/{groupId}, andGET /QuickConnect/Initiate - The global subtitle configuration has been removed, subtitle settings are configured per library
.oggis no longer treated as a video extension and is audio only,.aifcis now recognized as audio, and.aiffis no longer treated as an image- Symlinks are only resolved at playback time
- Sorting by name now uses
SortNameandCleanName, and the same cleaning logic is applied toForcedSortName. Library ordering may change compared to 10.11 - Image endpoints no longer upscale beyond the source resolution, so low resolution artwork renders at its real size instead of being enlarged
- Username capitalization can now be changed. Usernames are stored in a normalized column with a unique index, so installs with usernames that differ only by case need to be corrected before upgrading
Database and performance
- Playlists and collections are now properly relational, using a new
LinkedChildrentable instead of serialized child lists.OwnerIdandPrimaryVersionIdare real GUID foreign keys, andExtraIdshas been dropped - Many tuning migrations covering item counts, item names, type and clean name, latest items, image info, and primary version id
- Migration routines clean up existing data on first boot: duplicate music artists and people are merged, orphaned extras and external data are removed, incorrect owner relationships are repaired, and clean names, forced sort names, and series presentation keys are recomputed
- Heavy database tasks no longer run while a library scan is in progress
- Faster queries for Resume, Next Up, rewatching, Latest Items for music, playlists and collections, artist lookup, and item counts
- Item deletion is batched, which fixes "too many SQL variables" failures when deleting large numbers of items
jellyfin.dbcan now be stored at a custom path
Operations
- New
--modestartup flag withMediaServer,MigrateSystem, andSeedSystem, allowing migrations or database seeding to be run without starting the server. This is useful for containerized and orchestrated deployments and for controlled upgrades - The startup interface has been restyled and now shows version and activity information
- Disabled plugins are no longer re-enabled on restart
- Full system backups skip corrupt keyframe rows instead of failing
Media and subtitles
- Subtitle writing now goes through SubtitleEdit, which is what avoids the SSA to ASS conversion and loss of styles
- External subtitles can be embedded into MKV when transcoding
- The subtitle extraction timeout is now configurable
- Client-rendered graphical subtitles are allowed during remux
- Fixes for races in concurrent subtitle conversion, cache invalidation when a subtitle is replaced, and ffmpeg hangs during extraction
- New
HlsAudioSeekStrategyconfiguration option - Trickplay: existing files are discovered during a scan, duplicates from interlaced video are fixed, invalid PTS values from containers are normalized, and the cache is cleaned up after a failure
Live TV
- Live TV no longer returns unreachable "server-local" streaming URLs to clients
- XMLTV background images and episode thumbnails are now imported
- XMLTV guide imports skip programs whose data has not changed, using an ETag computed from the fields the server actually consumes, which makes repeat guide refreshes considerably cheaper. Other listings providers stay on the existing field-by-field update path
Metadata and providers
- ListenBrainz is now bundled with the server and provides similar artist data with a selectable similarity algorithm
- TVDB provider IDs are supported for movies
- AudioDb artist search
- ReplayGain album gain is parsed
- MusicBrainz lookups are more resilient
- WEB-DL release tags are recognized in file names
- Hyphenated numbers in episode titles are no longer parsed as multi-episode files
- 3D format detection works when the tag is the last token of the path
- Person metadata refreshes are queued instead of blocking the request
Transcoder
- New upstream version of FFmpeg 8.1
- Optimized CUDA transposing filter performance
- Optimized OCL scaling filter performance
- Optimized OCL tonemapping filter performance on Mali GPU
- Use EOTF from BT 2446 Method B for HLG tonemapping
- Fix potential A/V desync in HLS when transcoding video while remuxing audio
- Avoid SSA to ASS conversion and loss of styles
- Add spec-compliant dvh1 HLS variant for DoVi P5 for compatibility
Web
- The Modern layout is now the default, the previous layout is now called Legacy
- Updated Music Videos view
- Updated Mixed Media view
- Updated Collections & Playlists view
- Updated Books view
- Add still watching prompt
- Add delay setting for photo slideshow
- Add caching of queries to indexed db for the tanstack query client for improved loading performance
- Add watch feature to log viewer
- Add
,and.as controls to scrub frame-by-frame - Add filters for audio and subtitle languages (modern layout only)
- Add Collections and playlist tab to all libraries
- Add collections to item details page
- Replace libpgs with libbitsub and adds support for vobsub rendering
- Merge cards for crew with multiple roles
Layout and themes
- All themes now derive from a shared base theme built on CSS variables, including Dark, Light, WMC, Blue Radiance, Apple TV, and Purple Haze. Custom themes may need to be adjusted
- The library toolbar has been merged into the app bar, with a sticky library header and design polish throughout the library
- Custom links can be added to the Modern layout
- The screensaver time setting is now available in the Modern layout
Libraries and browsing
- Collections and folders tabs for book libraries, and a folder view in the Modern home videos layout
- Default tab options for Home Videos and Photos libraries
- Studio search, and an extended Studios tab
- Play All and Shuffle buttons on the series library. Both are disabled rather than hidden when no items are available
- Improved Upcoming view
- Sorting and filtering on the Activity page
- A Reset Filters button in the filter dropdown
- Folders can be marked as played
- TV show creators are shown on item details
- Similarity providers can be configured per library
- Pagination controls are hidden when paging is disabled
Playback
- The playback info overlay is more compact and shows more detail
- Chapter names are shown in the OSD slider bubble
- Bitrate detection now runs in web
- Dolby Vision in MKV on webOS 25 and newer
- AV1 fMP4 stream copy on TV clients
- Direct play of anamorphic video on Tizen, and loosened anamorphic restrictions for browser device profiles
- On iOS, background playback continues when the screen is turned off, and audio normalization is disabled to fix pitch and speed issues
- libbitsub updated to v1.11.0 with an HLS offset fix
- The screensaver is suppressed while viewing photos or reading
TV and remote
- Game controller navigation fixes, and the gamepad repeat rate is no longer tied to framerate
- Keyboard controls work on non-Latin keyboard layouts, with additional fixes for older browsers
- Rewind and FastForward play state commands are handled
- SyncPlay menu update, and the SyncPlay ping is now reported to the server
- Focused and checked checkbox styling in the TV layout
Under the hood
- WebSockets have been migrated to SDK subscriptions
- The React and TypeScript migration continues with the libraries, Live TV, and networking pages, and the dashboard user pages now use the TS SDK
- TanStack Query now backs user settings and home screen sections, and the query cache is cleared when the server restarts
Notable fixes
- Blurry card images on high DPI displays, and card image sizes are rounded up
- Duplicate
/socketconnections - Login loop, connecting to the wrong server when several are configured, and native shell server selection when signing out
- An invalid request for all items on page load
- The Live TV default landing tab
- Holding and dragging on media no longer activates multi-select
- A warning is shown before restoring a version, a warning is shown when starting a backup while a scan is running, and a library scan starts automatically when folders are added to a library
Security
Server:
- Path validation has been added to the legacy HLS segment endpoints and to the plugin image endpoint, so a requested file must resolve inside the transcode directory
- Path traversal hardening has been extended to the image and plugin endpoints and to username path handling, building on the fixes released in 10.11.x
- The startup wizard can no longer be re-run without authentication on a misconfigured server
- Unsafe plugin package names are rejected by the plugin installer
- Parental filtering is enforced on additional endpoints, playlist visibility has been corrected, non-admin access to additional parts has been fixed, and people are exempt from the allowed tags visibility check
Web:
- Cross-site scripting via person roles
- Auth parameters are encoded when creating API clients
- The login disclaimer only allows common link protocol schemes
Books
Books have often taken a backseat in favor of video playback in Jellyfin, but this should no longer be the case.
We have started a concerted effort to improve book support across the API and our official clients.
eBook and comic support is still maturing, but the ODPS plugin allows for direct access from a wide range of popular self-hosted programs.
Correspondingly, contributions in any repository are extremely welcome from the wider community.
That includes server improvements, documentation changes, and third-party clients for book playback.
A combination of eBook, comic, and audiobook support is available on the following clients.Official: Web, iOS, Android, Desktop, Roku, Kodi, JMP
Community: JellyBook, Symfonium, Jellium, PlappaOne notable omission from the server is book series as unique entities, which didn't make the cut for this release.
If you would like to bridge the gap until they are added, feel free to use the Folio plugin to display them as collections.
It functions very similar to the TMDb Box Sets plugin but only applies to eBooks.Another in-flight feature is audiobook chapters, which are only available from the API at present.
Luckily, this means client support is now possible, so you should see them appear in your favorite audiobook client before our next server release.NOTE: The Bookshelf plugin has been deprecated and its features have been merged into server or extracted into the ComicVine and GoogleBooks providers.
Server Changes
- Bookshelf has been split into separate GoogleBooks and ComicVine providers
- Local book parsing has been improved and is available without plugins
- Book metadata is extracted directly from OPF and ComicInfo files or ComicBookInfo comments
- External covers are now supported for audiobook files
- Posters are generated for EPUBs and all supported comic archives
- Name, index, year, and series are parsed from book filenames
- Both volume and chapter will be available in the API when present in comic filenames
- Page counts are extracted from comic archives and PDFs
- Creator names from OPF data are normalized to a common format
- A new OpenLibrary plugin has been created for metadata and images
- ISBN external IDs and links are supported
- Chapters are now extracted from audiobooks
Web Changes
- Modern book library layout has been added with view types and paging
- Books display information about their authors and vice versa
- Playback interface has been redesigned and standardized across all book types
- Progress indicator is enabled again for supported eBooks
- Sorting books by index number, release date, etc is now available
- Font size selection has been improved for EPUB files
- Background audiobook playback is working on iOS devices
- Authors, collections, and folders tabs have been added to book libraries, and audiobooks appear under authors
- Fullscreen behavior is unified across all book players, and PDFs support swipe navigation
Developers
API Changes
The API no longer allows the use of deprecated authorization mechanisms by default.
Clients and tooling need to migrate if they haven't done so already. See #15559 for details.There have been a number of other changes to the SDK libraries and API as part of an ongoing effort to better document the API for client use.
Please note the following with regards to API support.
A full explanation of our policy for API changes will be added to the developer documentation in the coming months.- If an endpoint isn't listed in the OpenAPI specification it should not be used by clients.
- There are certain endpoints that are still exposed for legacy reasons despite being excluded from the OpenAPI spec.
- These can be removed in any major release without warning
- If an endpoint or parameter is marked as obsolete in the OpenAPI specification it should not be used by clients.
- Same explanation as above.
- As a general rule, any deprecations will be marked as such for an entire (major) release cycle before the deprecated endpoint or parameter is liable for removal.
Behavior changes clients should be aware of:
GetItemsis now asynchronous and appliesrecursivewhen filters are requested, limited to requests that includeincludeItemTypes. The same query can return a different result set than it did on 10.11ItemByNameresponses are restricted and people are deduplicated- Newly obsolete but still functional, with replacements:
GetTrailers-> useGetItemswithincludeItemTypes=TrailerGetArtistsandGetAlbumArtists-> useGetPersonsGetArtistByName-> useGetPersonGetMusicGenre-> useGetGenreGetInstantMixFromMusicGenreByIdandGetInstantMixFromMusicGenreByName-> useGetInstantMixFromItemGetStartupConfiguration,UpdateInitialConfiguration, andSetRemoteAccess-> use the configuration endpointsGetRecordingsSeriesUserDto.HasPasswordis marked obsolete and no longer provides useful information
- The HLS controllers are hidden from the specification
Platform
- The server now targets .NET 10. Plugins have to be retargeted and rebuilt
- Swashbuckle has been updated to v10, which changes the generated OpenAPI document, so SDKs need to be regenerated
- jellyfin-web now builds with Node 24 LTS and npm 11
Plugin changes
ISearchEnginehas been replaced byISearchManager, andSearchEnginehas been replaced bySearchManagertogether withSqlSearchProvider- Removed:
NowPlayingQueueFullItems,DtoExtensions.AddClientFields,Jellyfin.Extensions.AlphanumericComparator, theISubtitleWriterfamily of subtitle writers, andSubtitleOptionswithSubtitleConfigurationFactory ServerConfiguration.EncoderPresetis no longer nullableIAuthenticationProvider.HasPasswordhas been removedIPasswordResetProvider.StartForgotPasswordProcesstakes the entered username and a nullable userIUserManager: theUsersandUsersIdsproperties are now theGetUsersandGetUsersIdsmethods, andRenameUser,ResetPassword, andChangePasswordtake a user id instead of aUser.GetFirstUserhas been added- Several
IItemRepositorymembers moved to the new services: item saving and deletion andUpdateInheritedValuestoIItemPersistenceService, counts toIItemCountService, and Next Up series keys toINextUpService IPeopleRepository.GetPeopleandILibraryManager.GetPeopleItemsreturn aQueryResult, andIDtoService.GetBaseItemDtosandILibraryManager.DeleteItemsUnsafeFasthave new signaturesIDirectoryService.GetFilePathsno longer takes asortargument, and theIPathManagersubtitle and attachment path getters are now nullable
New plugin APIs
This release adds several extension points that plugins could not hook into before.
- Search providers. Plugins can now take part in search itself rather than only in metadata lookup.
ISearchProviderexposesName,Type,Priority, andCanSearch(SearchProviderQuery), withIInternalSearchProviderfor providers that search the local library andIExternalSearchProviderfor providers that streamSearchResultitems from a remote service. Providers are registered throughISearchManager.AddPartsand are consulted in priority order, so a plugin can extend or take over from the built-inSqlSearchProvider - Similarity and recommendation providers.
ISimilarItemsProvideris split inherited byILocalSimilarItemsProvider,IRemoteSimilarItemsProvider, andIBatchLocalSimilarItemsProvider, each with a generic variant so a provider can declare the item type it handles. Providers are selected and ordered per library throughLibraryOptions.SimilarItemProvidersandSimilarItemProviderOrder, andISimilarItemsManageralso pulls movie recommendations. The bundled ListenBrainz provider is built on this - Comic metadata providers.
IComicProvider(ReadMetadataandHasItemChanged) lets a plugin supply comic metadata alongside the built-in ComicInfo and ComicBookInfo readers - Chapters for any item type.
IChapterManager.SaveChaptersnow takes aBaseItemrather than aVideo, and gained aSupports(BaseItem)check. This is what makes audiobook chapters possible, and it lets plugins save chapters for non-video items - Password resets for unknown users.
IPasswordResetProvider.StartForgotPasswordProcessnow receives the entered username along with a nullable user, so a provider can handle a request for a username the server does not know or hand the reset off to an external provider - Media segment cleanup.
IMediaSegmentProvider.CleanupExtractedDatais called when an item's data is pruned, so segment providers can remove their own extracted files - Schedules Direct.
ISchedulesDirectServiceexposes available countries, service availability, and the image daily limit state, so Live TV plugins no longer need to reimplement them.ITunerHostManager.DeleteTunerHostallows removing a tuner - Alternate versions and linked children. Now that linked children are relational,
ILibraryManagerexposesResolveAlternateVersion,GetLocalAlternateVersionIds,GetLinkedAlternateVersions,GetItemIdsWithAlternateVersions, andUpsertLinkedChild. Plugins that manipulated version links through serialized item data need to move to these - Batch APIs for bulk work.
IUserDataManagergainedGetUserDataBatch,GetResumeUserData,GetResumeUserDataBatch, andResetPlaybackStreamSelections.ILibraryManagergainedGetPeopleByItems,GetPeopleNamesByItems, andGetNextUpEpisodesBatch.IItemCountServiceoffers batched child and played/total counts - Localization.
ILocalizationManager.GetServerLocalizedStringandGetLanguageDisplayNamelet plugins localize against the server locale ICollectionManager.GetCollectionsContainingItembacks the Included In feature, andIPlaylistManager.AddItemToPlaylistAsynctakes a position so items can be inserted at the top of a playlist
IHasEmbeddedImageis also new, but it is only for plugins compiled into the server; external plugins should keep declaring their image withimagePathinmeta.json.TLS Configuration
In the previous release notes 10.11.0 we announced the deprecation of the built-in TLS certificate handling for this version. This change has been postponed to a future version.
Discuss this release further on our forums.
Changelog (460)
π Security
- Potential FFmpeg argument injection via unescaped subtitle file path [GHSA-wwwm-px48-fpvq]
π Highlights
- Implement multiple versions for episodes. [PR #16828], by @Shadowghost
- Disable legacy authorization methods by default [PR #15559], by @nielsvanvelzen
ποΈ Enhancements
- Fix movie recommendations [PR #16856], by @Shadowghost
- Have device deletion take list of ids [PR #12834], by @LePips
- Allow tmdb as an alias for tmdbid provider id [PR #16433], by @theguymadmax
- Fix EPG issues [PR #16220], by @Shadowghost
- Add CACHEDIR.tag support [PR #16478], by @Shadowghost
- Remove global subtitle configuration [PR #14957], by @KGT1
- Fix: normalize punctuation when computing CleanName so searches without punctuation match (closes #1674) [PR #14879], by @audrey-inglish
- refactor(StreamInfo): reorganize subtitle URL logic and conditions [PR #13977], by @sususu98
π General Changes
- Fix Blu-ray multi-angle concat generation [PR #17824], by @Raspberry-Monster
- Expose optimized ItemCounts for byName items [PR #17821], by @Shadowghost
- Only download missing plugin images [PR #17820], by @Shadowghost
- Apply the resize sharpening kernel directly instead of via SKImageFilter [PR #17775], by @slevin-7
- Share played state across alternate versions [PR #17816], by @Shadowghost
- Fix TMDb search result ranking [PR #17819], by @Shadowghost
- Fix TMDb recommendations [PR #17810], by @Shadowghost
- Better handle timeouts on plugin operations [PR #17794], by @Shadowghost
- Don't dispose application singletons after running a code migration [PR #17791], by @Shadowghost
- Enforce dolby vision transfer check [PR #17806], by @gnattu
- Fix items being lost from the refresh queue and bound the directory service caches [PR #17763], by @Shadowghost
- Fix handling of unordered multi-episode NFOs [PR #17805], by @Shadowghost
- Optimize database after migrations [PR #17786], by @Shadowghost
- Bound change batches during a scan; keep ffprobe and image saves from failing [PR #17762], by @Shadowghost
- Fix PGS subtitles for BDMV with TrueHD [PR #17674], by @Oggeb1
- Probe .idx instead of .sub for external VobSub subtitle language detection [PR #17746], by @kfarnung
- Drop SyncPlay requests from sessions that left the group [PR #17799], by @fmarcac
- Fix Live TV HLS playback: bogus audio encoder and unplayable direct played manifests [PR #17768], by @Shadowghost
- Fix crash when SyncPlay shuffle mode is set to sorted twice [PR #17796], by @fmarcac
- Fix SyncPlay active session counter leaking on rejoin [PR #17800], by @fmarcac
- Fix unit mismatch in the SyncPlay resume delay floor [PR #17798], by @fmarcac
- Add comprehensive logging for post scan tasks [PR #17767], by @Shadowghost
- Fix UI stalls caused by large tag and genre sets [PR #17757], by @felixfoertsch
- Bound the TMDb response cache so a library scan cannot fill it without limit [PR #17764], by @Shadowghost
- fix: return fallback gracefully when requested fallback font is missing [PR #17761], by @zerafachris
- Fix people and artist validator creation and deletion handling [PR #17756], by @Shadowghost
- Add progress logging to data migrations [PR #17743], by @Shadowghost
- Enforce reliable processing order in PeopleValidationTask [PR #17750], by @Shadowghost
- Fix recursive handling for LinkedChildren [PR #17752], by @Shadowghost
- Fix ListenBrainz settings and similar item defaults [PR #17748], by @Shadowghost
- Fix item counts on the by-name endpoints [PR #17724], by @Shadowghost
- Enforce permissions on similar items [PR #17729], by @Shadowghost
- Fix formatting and test [PR #17744], by @Shadowghost
- Filter search candidates by user access in a single query [PR #17739], by @Shadowghost
- Support anime provider ids on season folders [PR #17731], by @Shadowghost
- Count a season's episodes by the season they belong to [PR #17735], by @Shadowghost
- Fix ParentId for episodes in virtual seasons [PR #17719], by @theguymadmax
- Persist the refresh stamp so the people task stops redoing its work [PR #17709], by @Shadowghost
- Fix children count on virtual items [PR #17718], by @Shadowghost
- Delete credits nothing maps to and bound item-by-name folder names [PR #17715], by @Shadowghost
- Build a TMDb series cast from the aggregated credits [PR #17716], by @Shadowghost
- Stop deriving user view ids from their localized name [PR #17714], by @Shadowghost
- Fix IsPlayed and IsUnplayed sorting for shows and collections [PR #17713], by @LTe
- Say which image and item failed instead of logging a blank path [PR #17711], by @Shadowghost
- Fix OMDB People handling [PR #17710], by @Shadowghost
- Fix person metadata not being fetched on demand or by the people task [PR #17702], by @Shadowghost
- Fix series merging leaking across libraries and under-counting merged children [PR #17693], by @Shadowghost
- Fix English metadata blocking localized providers ranked below it [PR #17619], by @Shadowghost
- Look up people by item via the credit map instead of a full scan [PR #17700], by @Shadowghost
- Mark breakOnNonKeyFrames as XMLIgnore [PR #17698], by @Shadowghost
- Fall back to the ancestor filter when a view has no top parents [PR #17691], by @Shadowghost
- Safeguard against invalid provider ids [PR #17584], by @Shadowghost
- Optimize query helper memory [PR #17607], by @Shadowghost
- Allow direct play for HDHomeRun Live TV tuners [PR #17682], by @theguymadmax
- Fix latest items for mixed libraries [PR #17678], by @theguymadmax
- Stop user updates from orphaning permission and preference rows [PR #17645], by @Shadowghost
- More resilient MusicBrainz lookup [PR #17670], by @Shadowghost
- Use client-reported position for idle playback cleanup [PR #17631], by @itsb
- Fix GitHub URL typo in CONTRIBUTORS [PR #17659], by @FirmaSpring
- Fix SQLite variable limit in child count batches [PR #17658], by @martin-77
- Prevent orphaned user permissions and preferences [PR #17643], by @m0g3r
- Fix large playlist persistence with WhereOneOrMany [PR #17655], by @martin-77
- Fix other two unit test for localization of Artists in DE [PR #17637], by @IDisposable
- Recognize WEB-DL release tags in video names [PR #17636], by @st7105
- Fix unit test for localization of Artists in DE [PR #17633], by @IDisposable
- Fix FindArtists [PR #17604], by @theguymadmax
- Fix EF core designer drifts [PR #17570], by @Shadowghost
- Fix missing ItemRemoved events and search fallback after access filtering [PR #17579], by @Shadowghost
- Fix PersonTypes not applied when filtering by person [PR #17597], by @theguymadmax
- Fix master build [PR #17599], by @Shadowghost
- Fix assemblies [PR #17582], by @Shadowghost
- Bugfix: #17547 | Batching MediaSourceCount into one call [PR #17576], by @obiwantoby
- fix: bound remote provider pagination [PR #17590], by @TOomaAh
- fix: correct IsAiring negation to exclude airing items [PR #17588], by @TOomaAh
- Stop image endpoints from upscaling beyond the source resolution [PR #17569], by @vavallee
- Cleanup and simplify query helpers [PR #17563], by @Shadowghost
- Add warning that PessimisticLockBehavior is unsafe [PR #17560], by @IDisposable
- Batch people lookups when building item DTOs [PR #17571], by @obiwantoby
- fix(images): disambiguate progress overlay cache keys [PR #17492], by @GOvEy1nw
- Fix by-name endpoints reporting TotalRecordCount=0 next to a populated Items array [PR #17541], by @vdatanet
- Clear metadata provider cache when provider parts are registered [PR #17525], by @rlauuzo
- Delete old related info in bulk as late as possible in UpdateOrInsertItems [PR #17555], by @IDisposable
- Fix disabled plugins being re-enabled on restart [PR #17521], by @Shadowghost
- Fix captured (and discarded) Execute exceptions [PR #17559], by @IDisposable
- Speed up UpdateOrInsertItems for related information [PR #17554], by @IDisposable
- Switch SQLite connection Cache to Private [PR #17558], by @IDisposable
- Fix concurrent ffmpeg segment racing [PR #17536], by @gnattu
- Parse ReplayGain album gain field [PR #17315], by @Florin-Popescu
- Improve People deduplication, fix search and restrict ItemByName responses [PR #17466], by @Shadowghost
- Fix PCM audio transcoding to wav returning HTTP 500 and headerless output [PR #17537], by @vdatanet
- Revert "Refresh Live TV channel icons on every guide update." [PR #17549], by @theguymadmax
- Keep folder extras with the item that owns the folder [PR #17524], by @Shadowghost
- Only treat series and seasons as resumable folders [PR #17523], by @Shadowghost
- Degrade ForceKeepAlive logs to debug [PR #17528], by @Shadowghost
- Fix extras naming and version assignment [PR #17456], by @Shadowghost
- Allow client-rendered graphical subtitles during remux [PR #17512], by @altqx
- Use CleanName when sorting by name [PR #17503], by @theguymadmax
- Fix AdjacentTo being ignored on non-recursive item queries [PR #17486], by @Shadowghost
- Fix video version links being read from stale serialised item data instead of the LinkedChildren table [PR #17482], by @Shadowghost
- Fix Live TV returning unreachable "server-local" streaming URLs to clients. [PR #17298], by @WizardOfYendor1
- Add Tmdb missing episode provider [PR #17147], by @Shadowghost
- Fix storage info lookup for Windows [PR #17500], by @theguymadmax
- Skip SIDX in fMP4 HLS segments [PR #17501], by @alchemyyy
- Fix (Un)Played filter correctness and performance [PR #17463], by @Shadowghost
- Queue person metadata refresh instead of blocking the item request and fix ItemCounts [PR #17460], by @Shadowghost
- Reevaluate pending migrations after each one instead of per stage [PR #17455], by @Shadowghost
- Allow duplicate LinkedChildren for Playlists [PR #17416], by @Shadowghost
- Implement AudioDb artist search [PR #17424], by @Shadowghost
- Fix 3D format detection when the tag is the last token of the path [PR #17310], by @TowyTowy
- Fix missing collection folder posters after initial scans. [PR #16409], by @elio42
- Fix series merging [PR #17417], by @Shadowghost
- Reduce correlated subqueries to improve query performance [PR #17422], by @Shadowghost
- Fix hyphenated numbers in episode titles parsed as multi-episodes [PR #17442], by @Shadowghost
- Fix incorrect year on local trailers [PR #17399], by @Shadowghost
- remove ogg from video extensions since it should only be used for audio [PR #17437], by @dkanada
- Avoid NRE when sorting by user-dependent keys without a user [PR #17395], by @paoloantinori
- Skip ComicInfo parsing if none exists [PR #17423], by @Shadowghost
- Fix play queue index handling in SyncPlay [PR #17234], by @Eneo-org
- Apply cleaning logic on ForcedSortName [PR #17402], by @Shadowghost
- Check the "name" tag for audio/subtitle probe to fix MP4 not showing correctly - Fixes issue #17418 [PR #17419], by @rwebster85
- Drain stderr and stdout concurrently for encoder validation [PR #17430], by @gnattu
- perf: avoid unnecessary list allocation in CheckForIdlePlayback [PR #17411], by @mbastian77
- Match VobSub MKS subtitle profiles by container [PR #17227], by @altqx
- Improve language filters to only fetch language codes that match the requested items/libraries (follow up to #9787) [PR #16980], by @TheMelmacian
- fix: don't throw ArgumentNullException on partial UpdateItem payloads (#17366) [PR #17370], by @zerafachris
- Prevent unauthenticated re-run of the startup wizard on misconfiguration [PR #17369], by @Shadowghost
- Truncate ISO-639-2 language display names at first delimiter [PR #17160], by @854562
- Fix subtitle encoding for local files [PR #17281], by @Shadowghost
- Backport and extend path traversal fixes [PR #17368], by @Shadowghost
- fix: skip corrupt KeyframeData rows during full system backup [PR #17367], by @zerafachris
- Add XML docs to small model enums and remove CS1591 suppressions [PR #17376], by @mbastian77
- Exempt people from the allowed tags visibility check [PR #17377], by @mbastian77
- extract page count from archives and PDFs [PR #17311], by @dkanada
- Feat (fix) - Skip reprocessing program information when importing XMLTV EPG data [PR #16933], by @WizardOfYendor1
- Fix profile image being impossible to clear when its in-memory key is temporary [PR #17282], by @TowyTowy
- Fix: Fetch the correct row matching the most up to date file [PR #17320], by @jordanmichaelrushing
- Fix race condition in concurrent subtitle conversion [PR #17342], by @LTe
- Make RequestHelpers.GetOrderBy generic and reuse it in ActivityLogController [PR #17324], by @damienmeur
- Add additional attribute aliases and improve attribute detection [PR #17254], by @sjakub
- Fix SchedulesDirect image limit recognition [PR #17347], by @Shadowghost
- Sort trailers for TV Shows [PR #17204], by @theguymadmax
- Add TVDB provider ID support for movies [PR #17255], by @theguymadmax
- Fix artists being displayed with albums [PR #17252], by @theguymadmax
- Remove libpostproc check for ffmpeg version validation [PR #17384], by @gnattu
- Fix linked whitespace after image badges in
README.md[PR #17382], by @kaunkrishna - normalize common formats for creator names in OPF data [PR #17291], by @dkanada
- Keep authenticated user entity in sync with persisted login timestamps [PR #17302], by @ElianCodes
- Normalize invalid PTS from containers for Trickplay generation [PR #17304], by @nyanmisaka
- Fix Resume query performance [PR #17365], by @Shadowghost
- Add XML docs to small entity interfaces and remove CS1591 suppressions [PR #17375], by @mbastian77
- Fix Swagger UI auth docs (#12990) [PR #16910], by @cha5u5
- Prevent ffmpeg from hanging extracting subtitles [PR #17297], by @IDisposable
- Show production companies under TV Shows' Studios [PR #17246], by @Rant423
- Fix potential garbled text in FFmpeg logs on Windows [PR #17288], by @nyanmisaka
- Remove PlaybackPositionTicks from MediaSourceInfo [PR #17327], by @Shadowghost
- Fix format negotiation in hybrid SW decode and CUDA tonemap pipeline [PR #17334], by @nyanmisaka
- Fix Identify returning wrong images [PR #17151], by @theguymadmax
- Update season and episode SeriesName when renaming a series [PR #17326], by @theguymadmax
- Remove episode image override hack [PR #17280], by @Shadowghost
- Fix path transversal exposure in Plugins [PR #17191], by @IDisposable
- Revert setting default BaseItemKind for CollectionType [PR #17348], by @theguymadmax
- Add XML docs to small channel types and remove CS1591 suppressions [PR #17343], by @mbastian77
- Add XML docs to small session model types and remove CS1591 suppressions [PR #17344], by @mbastian77
- Add XML docs to small DLNA model types and remove CS1591 suppressions [PR #17340], by @mbastian77
- Add XML docs to provider lookup info types and remove CS1591 suppressions [PR #17339], by @mbastian77
- Add XML docs to DeviceId and remove CS1591 suppression [PR #17338], by @mbastian77
- Limit similar items to user accessible libraries [PR #17337], by @Shadowghost
- Fix max login attempts [PR #17274], by @theguymadmax
- Add Novel job mapping to the Writing department [PR #17248], by @theguymadmax
- Allow SeriesName to be editable from Item Metadata (books) [PR #17250], by @jordanmichaelrushing
- Fix additional parts for non-admins [PR #17266], by @Shadowghost
- Fix incorrect protocol used for subtitle charset detection [PR #17306], by @theguymadmax
- Check numeric rating value after splitting country code [PR #17273], by @theguymadmax
- support external images for audiobooks [PR #17287], by @dkanada
- Fix Greece parental ratings [PR #17268], by @theguymadmax
- Fix actor images not displayed until clicked [PR #16668], by @johnpc
- Don't throw on logout if session does not exist [PR #17228], by @Shadowghost
- Use InvariantCulture when parsing machine-generated dates [PR #17238], by @iderex
- Fixes for multi version handling [PR #17044], by @Shadowghost
- Fix parental rating lookup for multi-rating entries [PR #17239], by @theguymadmax
- Fix ghost entries when deleting library paths [PR #17231], by @theguymadmax
- Allow changing capitalization of usernames [PR #17229], by @Bond-009
- Fix folder view [PR #17222], by @theguymadmax
- Close sessions for lost WebSockets to prevent zombie SyncPlay groups [PR #17079], by @Eneo-org
- Fix Swedish rating [PR #17209], by @theguymadmax
- Fix NullReferenceException in GetStreamingState for closed live streams [PR #17206], by @zachhide
- Use Enumerable.LeftJoin for activity log user query [PR #17175], by @obrenoalvim
- Rework bitrate reporting [PR #17170], by @Shadowghost
- Fix Book collections speed issues [PR #15954], by @IDisposable
- Batch duplicate-cleanup deletes in merge migrations [PR #17162], by @Shadowghost
- Remove orphaned people [PR #17140], by @theguymadmax
- Reject unsafe plugin package names in installer [PR #17013], by @dfederm
- Use Convert.ToHexStringLower for Schedules Direct password hash [PR #17174], by @obrenoalvim
- Live TV: re-fetch channel icons on guide refresh [PR #16914], by @danieltutuianu
- Revamp startup UI for visual style and usability [PR #17154], by @joshuaboniface
- Fix localization lookup [PR #17187], by @Shadowghost
- Fix embedded lyrics not updating on replace all refresh [PR #17134], by @theguymadmax
- Fix Live TV tuner not releasing [PR #17178], by @theguymadmax
- Don't run heavy DB tasks while scan is running [PR #17182], by @Shadowghost
- Fix local Comic book plugin registration [PR #17188], by @Shadowghost
- Fix too many SQL variables in DeleteItem for large batch deletes [PR #17153], by @joshuaboniface
- Fix Identify returning wrong results [PR #17146], by @theguymadmax
- Fix audio sample rate forced to 48 kHz for non-Opus codecs [PR #17090], by @moontwister
- Deprecate the redundant /Trailers endpoint [PR #17094], by @moontwister
- Skip parsing root-level folders in SeriesResolver [PR #17116], by @theguymadmax
- Fixed "Deleting media that is still being watched in SyncPlay results in errors" [PR #14935], by @pokreman06
- Fix series year lost during name parsing [PR #17112], by @theguymadmax
- Fix episode air date offset after initial scan [PR #17121], by @theguymadmax
- Follow native interoperability best practices [PR #17099], by @Bond-009
- improve book resolution from filename [PR #17087], by @dkanada
- Extend TranscodingReason reporting [PR #17106], by @Shadowghost
- Always apply recursive when filters are requested [PR #17088], by @Shadowghost
- Fetch TV Shows creators from TMDB [PR #17107], by @Rant423
- Replace usage of SharpCompress [PR #17089], by @Bond-009
- Fix AlbumIds filtering by Name instead of by Id [PR #17085], by @matt-teahan
- Add support for background images and episode thumbnails from XMLTV [PR #17077], by @SheaSmith
- Fix AudioDb album description not displayed for English (mirror of #16606) [PR #17081], by @Gadnief
- Fix duplicate key collision [PR #17083], by @theguymadmax
- Assign correct season info to new episodes [PR #17051], by @ivanjx
- Fix CleanName and CleanValue refresh [PR #17064], by @Shadowghost
- Fix duplicate trickplay images for interlaced videos [PR #17058], by @nyanmisaka
- migrate local comic providers to server codebase [PR #16444], by @dkanada
- Add code assistance section to PR template [PR #17054], by @nielsvanvelzen
- Prefer local alternate versions when deduplicating linked children [PR #17042], by @Shadowghost
- Media source handling fixes [PR #17041], by @Shadowghost
- Refresh live TV channel image when remapped (alt #7843) (fixes #7834) [PR #10841], by @Bond-009
- Implement search providers [PR #16121], by @Shadowghost
- fix(dto): prefer PlaylistsFolder primary image for playlists tiles [PR #16520], by @beateixeira04
- Fix xUnit1051 in UserManagerLockHelperTests [PR #17043], by @Shadowghost
- Update issue template version to 10.11.11 [PR #17035], by @theguymadmax
- Discover existing trickplay files on scan [PR #16945], by @Shadowghost
- Fix external data pruning on item deletion [PR #16941], by @Shadowghost
- Fix subtitle replacement not invalidating cache [PR #17028], by @Shadowghost
- Fix playlist visibility [PR #17025], by @Shadowghost
- Enforce parental filtering on additional endpoints [PR #17019], by @Shadowghost
- Prefer subtitle extension over codec [PR #16998], by @Bond-009
- Improve Merge Conflict Labeler [PR #17018], by @Bond-009
- Fix season unknown for flat TV structures [PR #16995], by @theguymadmax
- Make EncoderPreset non nullable [PR #17007], by @nyanmisaka
- Only default recursive to true if we have includeItemTypes [PR #16999], by @Shadowghost
- Extract attachments in one ffmpeg command when dumping [PR #16915], by @Shadowghost
- Fix incorrect list capacity [PR #16996], by @theguymadmax
- Trim tags [PR #16994], by @theguymadmax
- Fix recently added episode links and posters [PR #16967], by @Shadowghost
- Write subtitles using SubtitleEdit [PR #16805], by @Bond-009
- Re-disable legacy authorization methods by default [PR #16992], by @theguymadmax
- Only resolve symlinks on playback [PR #16965], by @Shadowghost
- Fix folders being identified as seasons in mixed libraries [PR #16259], by @theguymadmax
- Fix Schedules Direct API Error Codes [PR #16920], by @arazilsongweaver
- Fix similarity [PR #16942], by @Shadowghost
- Fix inaccessible artist when they exist in multiple libraries [PR #16977], by @theguymadmax
- Add support for VobSub subtitle streams [PR #16552], by @altqx
- Compare old file byte-by-byte to new stream [PR #16936], by @IDisposable
- Remove NowPlayingQueueFullItems from session DTOs [PR #16976], by @PCEWLKR
- Use ConfigureAwait(false) in CollectionController [PR #16953], by @PCEWLKR
- Fix CA2007 warnings in InstallationManager [PR #16946], by @jonesy827
- Add a collection API for
Included Infeature [PR #15516], by @XSAM - Add new viewtypes options [PR #16177], by @theguymadmax
- Fix Merge Conflict Labeler #2 [PR #16963], by @Bond-009
- Fix A/V desync when resuming HLS with video transcode + audio copy [PR #16580], by @LTe
- Improve OriginalLanguage normalization and inheritance [PR #16829], by @Lampan-git
- Update issue template version to 10.11.10 [PR #16927], by @theguymadmax
- Fix inconsistent extradata generated by hevc_vaapi on AMD driver [PR #16913], by @nyanmisaka
- Backport: Fix/user manager collation [PR #16919], by @Bond-009
- fix: suppress repeated PriorityClass warning in MediaEncoder [PR #16872], by @psavarmattas
- Update issue template version to 10.11.9 [PR #16897], by @theguymadmax
- Add support for filtering playlists by parentId [PR #16893], by @Shadowghost
- Fix Merge Conflict Labeler [PR #16892], by @Bond-009
- Add CI format check [PR #15250], by @jakobkukla
- Reorder Migrations and fix failing migration [PR #16861], by @JPVenson
- Add support for filtering boxsets by parentId [PR #16882], by @Shadowghost
- Modernize version display in UI [PR #16862], by @JPVenson
- Fix integrated provider images [PR #16855], by @Shadowghost
- Use --batch --yes for installing jellyfin keyring in devcontainer [PR #16878], by @IDisposable
- Embed external subtitles into MKV when transcoding [PR #16448], by @LTe
- fix: write livetv recording NFO dateadded as UTC [PR #16863], by @tayfun-akguc
- Misc fixes [PR #16837], by @Shadowghost
- fix: add null check for non-existent program in GetProgram [PR #16858], by @BrunoSync
- Fix CA1819 warnings in ChannelFeatures by using IReadOnlyList [PR #16853], by @jtvhd6
- Set max rating for splashscreen to 13 [PR #16852], by @theguymadmax
- New filters for audio and subtitle languages [PR #9787], by @TheMelmacian
- Implement similarity providers [PR #15970], by @Shadowghost
- Add Accept-Language header support and cleanup translations [PR #16488], by @Shadowghost
- Update log for user session related concurrency update fails [PR #16835], by @JPVenson
- return music artists from person endpoints [PR #16721], by @dkanada
- Reference correct .NET version in README [PR #16831], by @Bond-009
- consolidate OpenAPI categories and deprecate startup routes [PR #16757], by @dkanada
- Safeguard against invalid GUIDs [PR #16813], by @Shadowghost
- Use SortName when sorting by name [PR #16804], by @Shadowghost
- Suppress CA2213 false positive on ApplicationHost._pluginManager (#2149) [PR #16792], by @Crystora
- Print warning on invalid Subnets in Network/Proxy configuration [PR #16793], by @Shadowghost
- Add videoRotation profile condition [PR #16803], by @nyanmisaka
- Fix artist duplicates [PR #16807], by @Shadowghost
- IOException with STRM HTTP URLs [PR #16290], by @benbenmoss
- Fix Segment Provider Configuration [PR #16798], by @Shadowghost
- Fix CA1051 and CA1815 warnings, Change public fields to auto properties [PR #14847], by @tjwalkr3
- Add OriginalLanguage as option to PreferredAudioLanguage [PR #12579], by @Lampan-git
- Switch to new version scheme [PR #16758], by @Shadowghost
- fix person type exclusion in api response [PR #16784], by @dkanada
- Fix MusicBrainz test. [PR #16789], by @IDisposable
- Parse provider IDs from season and episode folder/file names [PR #16472], by @IDisposable
- Fix Canadian rating and fallback to unrated if we have a CountryCode but no matching rating [PR #16328], by @Shadowghost
- Fix live stream consumer leak on negative PositionTicks [PR #16321], by @WizardOfYendor1
- Add startup mode to migrate or seed the database on cmd [PR #16319], by @JPVenson
- Remove DigitalOcean from sponsors section [PR #16788], by @theguymadmax
- Ignore season directories with no video for TV Shows [PR #16611], by @LmanTW
- Fix #16308: Community ratings not updating after changing .nfo file. [PR #16466], by @PERSONALPANCHIWIRIS
- Fix unique people response for query if no item ID is supplied [PR #16783], by @Shadowghost
- Fix subtitle save path [PR #16779], by @Shadowghost
- Move MusicBrainz Query client to plugin instance [PR #16780], by @Shadowghost
- Fix UserManager after EFcore refactor (backport #15368) [PR #16782], by @JPVenson
- Add the filename to exceptions in DeserializeFromFile() [PR #16246], by @lcorbasson
- Add different Slovak and Czech translation of Season for parsing [PR #16646], by @Biosias
- Remove unnecessary ToList calls in TrickplayManager [PR #16322], by @poytiis
- Fix rewatch query [PR #16778], by @Shadowghost
- Speed-up LatestItems for Music [PR #16756], by @Shadowghost
- Guard against null-overwrite of saved audio/subtitle track selections [PR #16769], by @llaforest
- Fix use of thread-unsafe List.Sort() [PR #16777], by @gabeluci
- Keep legacy authorization enabled [PR #16754], by @nielsvanvelzen
- Fix dummy chapter handling for videos with a single chapter or short duration. [PR #16695], by @ExpctING
- Honor episode NFO season during metadata merge [PR #16702], by @itz4blitz
- Fix keyframe duration overshoot breaking playback [PR #16704], by @dyld-w
- Implement ignore rule caching [PR #16166], by @Shadowghost
- Fix Playlist and Boxset query, save and count performance [PR #16761], by @Shadowghost
- fix person TotalRecordCount when limit is applied [PR #16616], by @dkanada
- Fix triple digit episode number handling [PR #16475], by @Shadowghost
- Fix FFProbeVideoInfo downloading subtitles without considering internal streams [PR #16747], by @MBR-0001
- Query Performance Improvements [PR #16062], by @Shadowghost
- feat/audiobook_chapters [PR #16518], by @sevenrats
- Avoid SSA to ASS conversion and loss of styles [PR #16744], by @nyanmisaka
- fix: use symmetric 15s default for skip forward/backward lengths [PR #16739], by @tcsenpai
- hide HLS controllers and deprecate unused endpoints [PR #16715], by @dkanada
- Fix IPv6 prefixes not recognized as proxy [PR #16672], by @dwandw
- improve openapi endpoint categorization [PR #16698], by @dkanada
- Fix watched status resetting on re-watch [PR #15762], by @MSalman5230
- Upgrade to xunit v3 [PR #16666], by @Shadowghost
- fix: add image/jpg to MIME type extension lookup [PR #16658], by @jskoetsier
- Remove all JF contributors from Emby list [PR #16694], by @Bond-009
- Skip libraries without enabled subtitle providers in SubtitleScheduledTask [PR #16649], by @MBR-0001
- Include item path in provider error log messages [PR #16667], by @johnpc
- Enable jellyfin.db customized path [PR #15355], by @twsouthwick
- Update to Jellyfin.XmlTv 10.12.0-pre1 [PR #16659], by @Bond-009
- Set XmlTvProgram.IsLive [PR #8890], by @SenorSmartyPants
- Move rename command permission check to script [PR #11231], by @felix920506
- Added Tanzania countries.json [PR #14406], by @ewkonzo
- Don't allow library name with leading or trailing space [PR #13491], by @gnattu
- fix: retain subtitles spanning HLS segment boundaries [PR #16594], by @LiHRaM
- chore(ci): Add permissions grant [PR #13443], by @jsoref
- Fix artist metadata not being fetched on initial library scan [PR #16606], by @theguymadmax
- Fix in-process restart [PR #16482], by @Shadowghost
- add NameStartsWith and NameLessThan filters to Person search [PR #16619], by @dkanada
- Respect EnableSubtitleExtraction setting in subtitle delivery [PR #16380], by @LTe
- Fix language display for ISO 639-2-only codes (e.g. mul, und, mis, zxx) [PR #16567], by @shocklateboy92
- Fix HDR tonemapping for BDMV content [PR #16609], by @ddemarco5
- Fix FolderStorageInfo to show parent filesystem [PR #16456], by @joshuaboniface
- Don't spam debug log with items without rating [PR #16342], by @Bond-009
- Backport security fixes [PR #16577], by @Bond-009
- Update issue template version to 10.11.8 [PR #16573], by @theguymadmax
- Fix BoxSet parentId being ignored in item queries [PR #16490], by @theguymadmax
- Reverse check for track changed [PR #16501], by @bilbofroggins
- Add AlbumNormalizationGain field to BaseItemDto [PR #14745], by @HeroBrine1st
- add StartIndex and ParentId to person search [PR #16397], by @dkanada
- edit openapi files in place with sed [PR #16569], by @dkanada
- fix invalid workflow on openapi report job [PR #16561], by @dkanada
- Fix parental ratings not working on music albums [PR #16553], by @theguymadmax
- Fix UDP Auto-Discovery returning IPv6 for cross-subnet IPv4 requests [PR #15902], by @ZeusCraft10
- fix openapi report and publish workflows [PR #16556], by @dkanada
- Update issue template version to 10.11.7 [PR #16530], by @theguymadmax
- Add callback for segment data pruning to IMediaSegmentProvider [PR #16419], by @Shadowghost
- remove nested directory for openapi workflows [PR #16524], by @dkanada
- Cleanup trickplay cache dir on failure [PR #16365], by @Shadowghost
- Only set IsAvc for video streams [PR #16507], by @Bond-009
- split openapi workflows between pull request and merge [PR #16463], by @dkanada
- recognize underscore and dot separators for multi-version grouping [PR #16465], by @upscaylman
- fix: cap GetVideoBitrateParamValue at 400 Mbps [PR #16467], by @scheilch
- Add ignore patterns for Hungarian sample files [PR #16238], by @furdiburd
- More robust date handling in Library DB migration [PR #16474], by @Shadowghost
- Fix attachment extraction of files without video or audio stream [PR #16312], by @Shadowghost
- Add spec-compliant dvh1 HLS variant for Dolby Vision Profile 5 [PR #16362], by @NoFear0411
- Fix filename truncation when bracketed tags appear mid-filename [PR #16222], by @tyage
- fix crashes on devices that don't support ipv6 [PR #15841], by @JanzenJohn
- Fix int32 overflow in QSV rate-control parameter computation [PR #16376], by @scheilch
- Recognize ".m4b", ".m4a", ".aac", ".flac", ".mp3", and ".opus" as an audio-book formats [PR #15377], by @lousando
- include external IDs and URLs for book providers [PR #15593], by @dkanada
- Fix remote image language priority to prefer English over no-language [PR #16368], by @redinsch
- Respect library country code for parental ratings [PR #16388], by @theguymadmax
- Use generic Enum overloads to resolve CA2263 warnings [PR #16395], by @jaxx2104
- Return BadRequest when an invalid set of filters is given [PR #16398], by @Bond-009
- Fix ItemValues Type checks [PR #16160], by @Shadowghost
- Add missing ProducesResponseType(401) to QuickConnectController.InitiateQuickConnect [PR #16331], by @JuanCalderon-17
- Fix near-1:1 SAR values falsely flagged as anamorphic [PR #16318], by @NoFear0411
- Use artist images for music library thumbnail [PR #16240], by @theguymadmax
- AIFF support: add .aifc as audio file type, remove .aiff as image file type [PR #16274], by @ghost
- Update JetBrains logo link in README.md [PR #16323], by @anthonylavado
- Revise note on hosting web client for development [PR #16281], by @JPVenson
- Fix malformed query string in StreamInfo.ToUrl() causing 500 error via proxies [PR #16255], by @cosu
- Upgrade Swashbuckle to v10 [PR #16256], by @Shadowghost
- Mitigate pull_request_target privilege escalation [PR #16263], by @andrewrabert
- Fix episodes appearing in Season Unknown incorrectly and prevent unnecessary virtual season creation [PR #16236], by @theguymadmax
- TmdbSeriesProvider: Set ProductionYear field [PR #16144], by @DerMaddis
- Add moveToTop option to IPlaylistManager.AddItemToPlaylistAsync [PR #15138], by @kevgrig
- Fix: Add 'Kairon; IRSE!' to artist whitelist [PR #14709], by @loop95
- Fix container and updated [PR #16202], by @JPVenson
- Trim names and roles for people [PR #16181], by @theguymadmax
- Skip validation for empty landing preferences [PR #16178], by @theguymadmax
- Add curly brace and parentheses support for parsing attribute values [PR #14927], by @nileshp87
- Fix TMDB language handling: support full ISO 639-1 + ISO 3166-1 codes (e.g. zh-CN, zh-TW) [PR #16151], by @Daydreamer-riri
- Fix: Resolve CA1849 synchronous IO in EpubImageProvider [PR #16124], by @Gladtbam
- Remove some deprecated API members [PR #16110], by @nielsvanvelzen
- SessionManager: Log when playback is started [PR #15908], by @jpds
- extract local metadata from OPF and EPUB files [PR #15604], by @dkanada
- fix: prevent premature disposal of HTTP subtitle streams [PR #14809], by @lostb1t
- Update issue template version to 10.11.6 [PR #16059], by @theguymadmax
- Fix typos in XML documentation comments [PR #15997], by @vignesh1507
- Fix zh-CN subtitle language display [PR #15947], by @ZeusCraft10
- Update to .NET 10.0 [PR #15475], by @Bond-009
- Refactor HLS transcode seeking [PR #15926], by @abitofevrything
- fix: Handle unknown item types gracefully in DeserializeBaseItem [PR #15956], by @ZeusCraft10
- Add TrueHD and DTS codes string for HLS [PR #15959], by @nyanmisaka
- Fix KeyNotFoundException in CryptographyProvider when iterations parameter is missing [PR #15958], by @ZeusCraft10
- Fix API diff workflow [PR #15888], by @Shadowghost
- Optimize
StringHelper.FirstToUpper()[PR #15916], by @stevenaw - Upgrade Swashbuckle and fix OpenAPI spec [PR #15886], by @Shadowghost
- Fixed issue with ABI Compatability - Difference not completing [PR #15924], by @PeachesMLG
- Fix GET MetadataEditor ContentTypeOptions for mixed content [PR #15797], by @Smeagolworms4
- Add myself to CONTRIBUTORS.md [PR #15831], by @allmazz
- Fixed Multi Sort in New ActivityManager [PR #15820], by @bjorntp
- Update issue template version to 10.11.5 [PR #15798], by @theguymadmax
- Library: Async the SaveImages function [PR #15718], by @luigi311
- parse more information from book filenames [PR #15655], by @dkanada
- Optimize GetUniqueFlags() [PR #15774], by @stevenaw
- Remove legacy API route middleware [PR #15669], by @nielsvanvelzen
- Proper pinning of SkiaSharp to prevent accidental updates [PR #15736], by @MarkCiliaVincenti
- avoid Take(0) when Limit == 0 [PR #14608], by @ghost
- Fix typo in CheckOrCreateMarker exception [PR #15341], by @Xinerki
- Add ability to sort and filter activity log entries [PR #15583], by @crobibero
- Locking cleaning [PR #15713], by @MarkCiliaVincenti
- Fix episodes showing up on recently added shows [PR #15433], by @theguymadmax
- Add subtitle extraction timeout configuration option [PR #15538], by @KarkaLT
- Add CPU to issue template [PR #15704], by @theguymadmax
- Remove special client behavior for API response fields [PR #15638], by @nielsvanvelzen
- Add milliseconds to default console output format [PR #15227], by @kevgrig
- Fix TV Series parsing containing only numbers. [PR #14824], by @CodyEngel
- Add support for more embedded metadata tags [PR #15437], by @allmazz
- Deprecate HasPassword property on UserDto [PR #14950], by @nielsvanvelzen
- Add version to StartupUI [PR #15246], by @JPVenson
- Add all 10.11 versions to issue template [PR #15565], by @anthonylavado
- Update Jellyfin Server version in issue template [PR #15398], by @dpieski
- Update CODEOWNERS to capture bump_version [PR #15236], by @joshuaboniface
-
π Project Zero Testing race conditions with memory access tracing and stack-based delay injection rss
Many security bugs are race conditions, where multi-threaded execution has to occur with the right interleaving for a negative effect to appear. This creates challenges for several use cases:
- Confirming bug candidates that have been discovered manually or through static analysis.
- Regression tests: After fixing a race condition bug, there is often no good way to write a regression test that reliably triggers the bug as part of a test suite.
- Automatic bug discovery, such as fuzzing: It is hard for a fuzzer to exercise all interesting interleavings of concurrent operations, or reach code paths that are only exercised when operations are racing.
I mostly discover bugs by manually reading code. When I think Iβve found a bug, I normally write a test case to either prove or disprove that the bug exists. For race condition bugs, it can be hard to achieve either outcome. For Linux kernel bugs, I often resort to recompiling the kernel after adding conditional
mdelay()calls (which spinloop for roughly the specified amount of time) in appropriate places; I usually make these conditional based on the name of the running thread, though sometimes more complex conditions are needed. On platforms that support DTrace (like macOS and Windows), it is possible to use DTrace probes that callchill()for similar effect, though the utility of this is limited as DTrace can only trace on non-inline function boundaries or explicit trace points, rather than on every instruction. Regardless of platform, this approach can be time consuming and can require trial and error to definitely determine whether code is buggy.Additionally, in the Linux kernel, fixes for race condition bugs are often accompanied by hand-written ASCII diagrams showing problematic thread interleavings with call graphs and relevant memory accesses (for example, see this recent rt_spin_unlock UAF fix, or this recent jbd2 deadlock fix). It would be convenient to have developer tooling that can analyze potentially vulnerable code and show results in a similar representation.
Summary
I wrote tools for exploring possible interleavings of multi-threaded test cases for the Linux kernel:
- A tool that automatically tests all possible A-B-A interleavings of a test case.
- A terminal UI for manual exploration of possible interleavings.
- A GUI for manual exploration of possible interleavings.
The kernel part of this is intended to also be usable for discovering race conditions via fuzzing, but userspace tooling for that still needs to be implemented.
The tools are available on GitHub under the name MAccConc, short for βMemory Access Concurrencyβ; see the README there for installation and usage instructions.
If you just want to see the tooling in action, skip to Demo: automatic testing.
If youβre just interested in the theory behind the tooling, read section Stable identifiers for memory accesses across runs: count-augmented stack traces.
Prior work
This project was inspired by discussions with Ned Williamson, whose sockfuzzer project involved exploration of concurrency bugs by using a custom scheduler that can reschedule at synchronization primitives to explore interleavings. See the conference talk slides and recording focused on the concurrency testing aspect of this.
My tooling is largely based on ideas similar to SKI, but SKI uses a different implementation: It records memory accesses and controls scheduling of vCPUs using a patched version of QEMU in TCG mode, and uses VM snapshots to explore different execution interleavings.
Discovering memory accesses that could contribute to race conditions
(communication points)
As described in the SKI paper, interesting execution interleavings of a given multi-threaded test case can be discovered by tracing memory accesses of all threads and searching for pairs of accesses on two threads that could interact with each other - meaning, roughly, that at least one of them is a write operation, and they access overlapping memory ranges. The SKI paper calls such memory accesses communication points.
This requires some mechanism to collect memory access coverage. SKI did this by patching QEMUβs TCG mode; I am instead relying on ASAN instrumentation in βoutlineβ mode (compiler backend flag
asan-instrumentation-with-call- threshold=0, selected byCONFIG_KASAN_OUTLINEin the Linux kernel), which generates helper function calls on memory access. I believe that the kernel is the right place to collect this data because it would allow the kernel to also provide higher-level information about lock acquire/release events and such, though I have not implemented this at this time. Implementing this in the kernel also means that it would theoretically be possible to test on bare- metal hardware, rather than inside VMs.Since Linux already has KCOV as a mechanism to feed basic block kernel coverage information to userspace, I decided to use the same mechanism to record information about memory accesses. An alternative would have been to use ftrace, which is oriented towards tracing use cases, and includes a function graph tracing mode built on fentry hooks and more complex output buffer management that is oriented towards use cases including system-wide data collection. I chose to use KCOV because of its simpler in-memory representation of trace data (which could become relevant for recovering trace data from crashed VMs); because it uses static always-on instrumentation rather than runtime-enabled instrumentation with near-zero overhead in disabled state; and because my impression is that KCOV is designed for higher-frequency trace events than ftrace.
Implementation detail: ASAN and TSAN
ASAN normally merges helper calls for subsequent memory accesses. To receive one callback per memory access, the kernel patches explicitly disable this compiler optimization using the
asan-opt-same-tempbackend flag.ASAN is intended for identifying UAF, so it does not emit helper calls on direct stack memory access unless there is potential for out-of-bounds access. This means that some race conditions involving on-stack objects, such as wait queues, may not be detectable with this. ASAN also by default emits no helper calls for access to globals, but this optimization can be disabled using the
asan-opt-globalsbackend flag.An alternative would be to use TSAN instrumentation instead, which is designed for detecting data races and also provides information about access atomicity. The downside of TSAN instrumentation is that compilers do not support emitting both ASAN and TSAN hooks at the same time - so to still have working detection of memory safety violations (like UAF) while using TSAN hooks, it would be necessary to run the kernelβs ASAN implementation off of the TSAN hooks or change the compiler.
Implementation detail: KCOV and background work
Some race conditions involve background work, for example:
- receive processing of loopback network packets
- RCU callbacks
KCOV can optionally collect remote coverage for background work in some subsystems; however, in upstream Linux, most types of background work that would be interesting for me are not yet integrated with this mechanism, and remote coverage is currently mainly used for fuzzing subsystems that handle incoming data from devices, like bluetooth and USB.
Enabling this for other parts of the kernel should be relatively straightforward, and I have a draft patch for doing this for RCU callbacks.
Stable identifiers for memory accesses across runs: count-augmented stack
traces
To test out different orderings of memory accesses, a way to stably identify interesting memory accesses across test case executions is needed. Identifying memory accesses based on the data address would not work if the data address was located in an object which is freshly allocated during each test case execution; and identifying memory accesses solely by instruction address would not work well if the memory access was in a function like
memcpy()orspin_lock().SKI solves this using VM state snapshots, so that each execution starts from the same global state.
I am instead identifying memory accesses with count-augmented stack traces, where each stack trace element essentially consists of a callee function address and a number indicating how many calls to this callee should be skipped in the calling stack frame.
An example of the semantics of a count-augmented stack trace would be something like: βOn this thread, look at the second call to
__x64_sys_recvfrom, then within that, the first call to__sys_recvfrom, then within that the first call tosock_recvmsg, then within that, the first call tounix_stream_recvmsg, then within that, the first call tounix_stream_read_generic, then within that, the second call to_raw_spin_unlock, and then within that, the first memory access at instruction address Xβ.This unambiguously identifies a point in an execution trace, is independent of concrete data addresses, and is relatively stable with regards to changes in the control flow of irrelevant parts of the trace.
To make this work, KCOV must provide information about function entry/exit events so that when userspace is parsing KCOV coverage output, it can keep track of how the call stack changes. Doing this nicely requires compiler support as part of SanitizerCoverage; I landed an LLVM feature patch for this a few months ago (see documentation), which landed in the LLVM 23.1.0 release.
Forcing execution orderings with delay injection
To force specific execution orderings through KCOV, I implemented an ioctl
KCOV_SET_DIusing which userspace can request that actions (essentially wait/wake) are taken on memory accesses at specific count-augmented stack traces. (See documentation in my kernel branch.) Each action either sets one flag, or waits for one flag to be set, at a userspace-provided index in a shared array of flags. The possible action types are:DI_STACK_WAKE_PRE: before the memory access, set flag NDI_STACK_WAIT: before the memory access, spin-wait until flag N is setDI_STACK_WAKE_POST: after the memory access, set flag N
With the same ioctl, userspace also configures an upper limit on spin-wait iterations.
Additionally, there are ioctls for userspace to directly interact with the same flags.
This API enables two different ways of using delay injection: constraint-style delay injection and fully-specified ordering.
Constraint-style delay injection (A-happens-before-B)
Userspace can set up a series of A-happens-before-B constraints, where each such constraint is implemented as a pair of actions in different threads that operate on the same flag:
DI_STACK_WAKE_POSTfor the access that should happen firstDI_STACK_WAITfor the access that should happen second
With this approach, the execution ordering is left partly non-deterministic. This is what the GUI and terminal UI tools currently implement.
An advantage is that this is somewhat more intuitive for simple cases; however, it requires recording timing information to show the user approximately in what order events happened, and it can make the execution trace more complicated. It also often requires more constraints than a fully specified ordering, and is more complicated to reason about.
Fully specified ordering (context-switch-style)
Userspace can decide on a specific ordering in which events should occur, by picking points at which execution should transfer from one context to another. For the simple case with two execution contexts, this requires that thread A starts running a syscall while thread B begins by spin-waiting on a flag; then when thread A reaches some count-augmented stack trace, thread A uses a combination of
DI_STACK_WAKE_PREandDI_STACK_WAITto pause its own execution and let thread B continue; and later, thread B can do the same to switch back.This is the approach I used for the automatic A-B-A interleaving tester.
Demo: automatic testing
Iβll explain more background below; but first, here are two shiny demos on a toy example!
This is an example of using the automatic A-B-A interleaving tester on this test case with concurrent
dup(5)andclose(5)calls:#define _GNU_SOURCE #include <errno.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> static int test_fd; static int dup_res, dup_errno; void test_setup(void) { test_fd = open("/", O_PATH); } void test_thread1(void) { dup_res = dup(test_fd); dup_errno = errno; } void test_thread2(void) { close(test_fd); } void test_end(void) { printf("dup(%d) = %d (%s)\n", test_fd, dup_res, dup_res == -1 ? strerror(dup_errno) : "success"); }It discovers one ordering where
dup(5)returns5, which is working as intended but might be a somewhat surprising result:sh-5.3# ./kcov-autorace testcase/demo-dup-vs-close.so loading kallsyms RCU state (excluded): base=ffffffff82970100 len=500 loading testcase initializing kcov collecting A-B coverage dup(5) = 6 (success) testing candidates dup(5) = -1 (Bad file descriptor) dup(5) = -1 (Bad file descriptor) dup(5) = -1 (Bad file descriptor) dup(5) = 5 (success) dup(5) = 6 (success) dup(5) = 6 (success) dup(5) = 6 (success) dup(5) = 6 (success) dup(5) = 6 (success) dup(5) = 6 (success) dup(5) = 6 (success) stats: injection-failed:0 wait-timeout:7 reordered:4 sh-5.3#Demo: GUI
And here is an example of me using the GUI on the same test case, using it to manually force an ordering where
dup(7)returns7.First, I launch the GUI, then run the test case once in the guest:
sh-5.3# ./kcov-vsock-client testcase/demo-dup-vs-close.so dup(7) = 8 (success)At this point, no ordering constraints are enforced yet;
dup()andclose()are racing randomly. The GUI shows in what order execution happened:
This current view just shows function call graphs from both threads (thread 1 with black indent, thread 2 with red indent). The close() syscall happened to execute after dup() this time. Normal functions are shown in black; inline functions are shown in green, but only shown if they called a normal function (since βall inline functionsβ is not ticked).
Ticking βfilter to communication pointsβ shows a bunch of memory accesses in blue, which are communication points (as defined above, in short: reads from locations to which other threads write and writes to locations which other threads access;
kfree()counts as a write operation). Each memory access line shows the type of access (Read/Write/Free), data address, access size, and the memory value before the access. Hovering over an access highlights all overlapping accesses in yellow.
Left-clicking on a memory access shows a view that is instead filtered to only show memory accesses overlapping the selected access. Note that this can show reads that were not identified as communication points (because all writes happen on the same thread).

Left-clicking a function name shows a source code view on the right, interspersed with trace data. Data values loaded by memory reads are shown in red (under the source line and column to which the compiler attributes the access); data writes are marked similarly with a red βWRITEβ; memory accesses that are communication points are prefixed with βINTERFERENCEβ in orange. Function calls are shown in blue.

By right-clicking on two memory accesses in the call graph view, it is possible to create an ordering constraint between the two accesses, such that the kernel will attempt to make the first selected access happen before the second selected access. Each ordering constraint is shown on the right side, represented as two count-augmented stack traces. Note that the last bottom element of the stack actually identifies a specific instruction, but the UI doesnβt really show this. Also, the count-augmented stack traces shown here do not include inline functions.
In this case, I have created one ordering constraint that orders the second file descriptor table access in
__fget_files_rcu()(which is inlined into__fget_files()) before the file descriptor table entry removal infile_close_fd_locked()(which is inlined intofile_close_fd()). This ensures that the file descriptor table lookup indup()successfully looks up the file descriptor table entry before it is cleared by the concurrentclose().I have created another ordering constraint that orders the
spin_unlock(&files->file_lock)infile_close_fd()before thespin_lock(&files->file_lock)inalloc_fd()so that the file descriptor table entry has been released by the timedup()searches for an unused entry.In this view, ordering constraints have been specified, but the test case has not yet been run with this specified ordering.
(This view is filtered to show accesses to the files_struct::file_lock.)

Now, re-running the test case shows:
sh-5.3# ./kcov-vsock-client testcase/demo-dup-vs-close.so dup(7) = 7 (success)And the new trace appears in the UI, with brown βDELAY INJECTIONβ lines interspersed to show how the ordering constraints were applied.
Note that the UI shows the ordering of events based on timing information that is associated only with memory accesses; the placement for any event other than a memory access is inferred based on that. In views filtered by data accesses, function entry events are additionally only shown at the time of the first displayed non-function-entry event. For example, in the following screenshot, the first thread may have already entered
get_unused_fd_flags()by the timefile_close_fd()calledspin_unlock(), even though the events are shown the other way around. However, memory accesses should be shown in approximately the right order; with the caveats that the order of memory accesses might be wrong if events happened at the same clock value, and that timing information is recorded by instrumentation that runs directly before the actual access. (Building the tool on fully specified orderings instead would avoid such caveats.)(This view is filtered to show accesses to the file descriptor table entry.)

More documentation is available inside the GUI.
Implementation status
For LLVM: The required patch has landed in LLVM 23.1.0.
For the Linux kernel: The required patches are not yet in the upstream kernel. I am posting the Linux kernel patch series for upstream review around the same time as this blog post; a git branch with my patches is also available on github (with a few more patches that arenβt yet ready for upstreaming). If you want to test this tooling, you will need to use my kernel branch for now. (See the README in the tools repository for build instructions.)
My kernel patches are in a clean state; the userspace tooling is a bit more hacky, in particular the GUI implementation.
The command-line tooling can only handle two concurrent threads, while the GUI can handle additional execution contexts (with the
kcov-vsock-clientharness: background work launched by thread A).I am looking forward to hearing if this is useful to others, and maybe even what tools others manage to build on top of this! Feel free to reach out to me (for example via email to maccconc-tooling@google.com).
Future work
Use fully specified orderings instead of constraint-style for manual
tooling
The non-automatic tooling currently uses constraint-style delay injection; but as described above, fully-specified orderings have several advantages, including more deterministic behavior. I might change the GUI implementation to use fully-specified orderings instead in the future.
Type information for human-readable memory access traces
For reading memory access traces as a human, it might be helpful to provide information on the object types that are being accessed. One way to do this would be to follow what Microsoftβs debugging tools can do with CodeView debuginfo and use debuginfo to associate memory allocation function call sites with type information, then let the allocator track the call sites from which objects have been allocated.
I proposed to add such a feature to the DWARF standard, which has been accepted and is included in the current DWARF 6 draft (search for
DW_AT_alloc_type), and added enough support to LLVM to make it work in the same cases where it already worked with CodeView; but so far that only works for C++newcalls, I did not land the changes necessary to make it work formalloc.Making this work in the kernel would require infrastructure that either queries allocator metadata for every memory access record or provides an initial snapshot of heap allocator metadata across the system plus metadata about subsequent memory allocations.
Higher-level memory access feedback
One inefficiency in my current prototype is that userspace receives no information about the semantics of locking operations. If two threads each perform lots of memory accesses on an object while holding a lock protecting the object, this will generate a large number of potential communication points, but actually a locked section just represents one big communication point. It might be helpful if the kernel provided βlock acquiredβ and βlock about to be releasedβ events.
But that might not be a very general approach, since impossible orderings caused by locking are not so different from impossible orderings caused by things like an object being initialized before it is published to a global pointer or such.
Detecting impossible orderings faster: Deadlock detection
In my current implementation, when an attempt is made to force an impossible ordering via delay injection, the result is that one thread spins/waits on a lock until another thread reaches the delay injection timeout, which is inefficient. It might help to have integration with lock debugging infrastructure that can detect such a semi-deadlock in simple cases and abort the test case faster.
Fuzzing: Building up test cases with potential communication points like
Snowboard
Snowboard (a project that searches for concurrency bugs caused by interaction between fuzzer-generated single-threaded test cases) used recorded information about memory accesses in single-threaded test cases to identify which test cases could have interesting communication points when executed in parallel. It would be interesting to build something similar on top of this KCOV-based instrumentation.
It might also be interesting to use this for single-threaded test case creation: Start by collecting memory access coverage for individual system calls, then use that to determine which syscalls might interact with each other in interesting ways when executed in sequence, and build up longer system call sequences this way.
This would be easier using VM snapshots (like SKI), since my approach does not lead to stable data addresses across test case executions; but it would probably be possible by identifying memory locations that are different between test cases abstractly based on allocation sites, as long as allocation site information is available for all objects that are allocated per test case execution.
KCOV output to host-shared memory
My current tooling loses KCOV output if the kernel under test panics, so it canβt be used for displaying what happened when a kernel crash occurred.
For use cases where the kernel under test is a KVM guest, it might be useful to give the host direct access to the KCOV output buffer. One way to do this might be to use pages in a file on virtiofs with DAX as the KCOV output buffer, and allow writing KCOV output into userspace-provided pages.
-
π HexRaysSA/plugin-repository commits add Lumice/BinaryLens to known repositories rss
add Lumice/BinaryLens to known repositories -
π WerWolv/ImHex Nightly Builds release
-
π Ampcode News Steer, Don't Queue rss
When you send a message while the agent is working, it's now delivered at the next possible opportunity, instead of being queued until the agent finishes its turn.
This means the agent acts on your feedback sooner and doesn't waste time on unnecessary verification steps.
Most people won't need to change how they use Amp.
If you do find Amp steering too abruptly, we've found that it works well to phrase your prompts like "When done, then ..." instead of "Now, ...".
Ship,Review, and other builtin actions still queue, because usually you want to wait until the agent is done before shipping or getting a review.If needed, you can still queue from Amp or queue in the Amp CLI.
-
- September 07, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-09-07 rss
IDA Plugin Updates on 2026-09-07
New Releases:
Activity:
- ida-domain
- e0c16a90: Add support for decompiler strings #120 (#121)
- ida-forge
- a88cebfb: Port fork fixes and harden recovery pipeline
- ida-nexus
- ming-skills
- 82f19585: perf(supply-chain): parallelize freshness and cache lockfile reports
- 1459745f: feat(router): add quality gate governance composition
- 5ee886b2: fix(gate): align sca failure schema, forbid additional failure properβ¦
- 31799b6f: fix(gate): forbid additionalProperties in sca validation and add runnβ¦
- 8d501f61: fix(gate): validate sca finding via string elements and reject unknowβ¦
- c406bbfa: fix(gate): align sca schema range null, validate flag values, and extβ¦
- 8c8d107e: fix(gate): fix sca freshness false positive, hook planner, verify jsoβ¦
- e93e83ab: docs: bootstrap repository documentation and comprehensive architectuβ¦
- a5609953: feat(hooks): introduce pre-push gate, verify orchestrator, and batch β¦
- 1822117e: perf(tests): run isolated cli integration scenarios via bounded asyncβ¦
- 379b6d11: feat(hooks): implement explicit affected impact planner and contract β¦
- 851bea70: test(observability): add preflight failure scenarios for sync.failed β¦
- ffb60848: test(lint): add contract tests for lint text json and event modes
- afc78379: fix(supply-chain): strengthen artifact schema validation and add opt-β¦
- f3b57016: fix(benchmarks): parse -strict flag and wire strict assertions into β¦
- 95f8940d: test(benchmarks): restore 500-iteration sample size and decouple hardβ¦
- 7aa216f2: feat(router): extend engineering triggers for repository documentatioβ¦
- 6eaab460: fix(observability): ensure sync.failed event is emitted on all fatal β¦
- 6346d2f0: docs(hooks): clarify pre-commit test runner invocation and separate fβ¦
- c9d2fec0: fix(lint): eliminate duplicate counter increments in human readable rβ¦
- Persona4-Decompilation
- 876687ce: Define task forwarding and enemy bitmap boundary behavior
- 865a99a0: Unify ending-staff resource accessor pointer contracts
- 9e6d2a8a: Restore explicit ending-resource ownership release
- 88c28a3f: Simplify triangle normal candidate and verify caller boundaries
- 03a6003c: Define archived label wrapping and verify compact consumers
- a700674e: Refine shuffle initializer floor and verify order preconditions
- 75fa8c0d: Recover sound start routine with explicit argument forwarding
- plugin-ida
- 207fd202: chore(deps): Bump step-security/harden-runner from 2.21.0 to 2.21.1 (β¦
- ida-domain
-
π Locklin on science Q3 books 2026 rss
Saga of the Volsungs translated by Jesse Byock. Read this on a plane flight. Itβs been a long time (decades) since I read the Sagas, and the last one was Beowulf which isnβt as savage as this one. Lots of blood and guts. Lots of war and vengeance. Of course I had seen the Wagner […]
-
π HexRaysSA/plugin-repository commits sync repo: +3 releases, -1 release rss
sync repo: +3 releases, -1 release ## New releases - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.10.7, 0.10.6, 0.10.5 ## Changes - [ida-codemode](https://github.com/hexrayssa/ida-codemode): - removed version(s): 0.2.0 -
π smol-machines/smolvm smolvm v1.14.2 release
What's Changed
- Let an explicit --cpus or --mem that equals the default still override the Smolfile and pack values by @BinSquare in #1177
- Bump libkrun for the Windows virtiofs DAX fixes and rebuild the bundled libraries by @BinSquare in #1184
- Resolve a Smolfile image the same way as the --image flag so a local archive is not sent to the registry by @BinSquare in #1182
- Keep a released clone alive when the branch helper is its main process, and hand the child its identity through the helper itself by @BinSquare in #1178
- Say checkpoint, not snapshot, in the branch command's messages and help by @BinSquare in #1186
- Run init commands as root, since they provision the machine and the user directive names who the workload runs as by @BinSquare in #1188
- Document the branchpoint contract and say how to reach one when a batch branch waits by @BinSquare in #1183
- Bump the workspace to 1.14.2 by @BinSquare in #1185
Full Changelog :
v1.14.1...v1.14.2 -
π r/Harrogate Run clubs? 27yr old M rss
| Hi currently working on making an app, and training for Royal Marines reserves next year. Any running club or buddy or gal would be great Also go pure gym in town & hydro for swimming and sauna submitted by /u/FrontRaspberry5060
[link] [comments]
---|--- -
π Rust Blog Rust debugging survey 2026 results rss
One of the biggest challenges Rust developers report in our annual surveys is a subpar debugging experience. So, back in February, we ran our first Rust Debugging Survey, in the hopes of identifying how Rust developers are using debuggers and what problems they are facing when doing so. We received over 2,300 responses, and we'd like to thank everyone who took the time to participate in the survey!
In this report, we'll go over some of the results of the survey. If you'd like, you can also check out the complete results of the survey.
If you'd like to skip ahead to any particular section, you can do so with this index:
Who Uses Debuggers?
The first step to making sense of the survey results is understanding who took the survey. We asked respondents to rate their Rust expertise, from "Never used it" to "Advanced". Over 80% reported themselves as "Advanced" or "Intermediate", split roughly evenly between the two:

We also asked respondents if they currently use or have used debuggers in Rust. Over 46% said they currently do, with the remaining responses split between "have in the past" and "never have". That means that over half of respondents do not currently use a debugger for Rust!

Categorized by expertise, the responses reveal that roughly half of "beginners" have never used debuggers in Rust! On the other hand, nearly half of "advanced users" currently do use debuggers in Rust:

For respondents who indicated they had previously used Rust but no longer did, we asked if challenges with debugging support were why they stopped. For nearly 3%, the answer was "yes", with an additional 24% reporting debugging issues as being partially responsible (though mind the small response count; most respondents were active users of Rust):

How Are Debuggers Used?
Knowing what debuggers developers are using and how is another important part of understanding the challenges they face. To this end, we asked respondents how they were debugging their programs. Unsurprisingly, most developers make use of print debugging and the
dbg!macro. Excluding those, usinglldbinside an IDE was the most popular choice, followed bygdbon the command line:
We can get a more detailed breakdown of these results if we include the operating system on which the respondents use a given debugging approach. We examine this from two different angles. The first angle being, "On operating system X, what percent of responses are using debugger Y?". Print debugging and the
dbg!macro are consistently the top two yet again, but looking beyond that, things get more interesting. On Linux, usinggdbon the command line was the most popular choice by a thin margin, beatinglldbin an IDE by only 0.4%. On Windows, Windows Subsystem for Linux (WSL), and macOS,lldbin an IDE was the top pick by at least 6%, making it a very popular choice in general. On Windows, the three least popular choices were the command line debuggers (gdbCLI,lldbCLI, and BugStalker), and on both Windows and macOS the third most popular pick was, "I don't know". Those who were debugging on operating systems not listed (Other) most frequently used some kind of special embedded debugger orgdb:
The other angle we can look at these responses from is, "For users of debugger X, what percent of responses are using it on operating system Y?". For most debuggers, Linux makes up the largest portion of uses, ranging from about 45% to about 77%, followed by Windows, then macOS. The most notable exceptions are WinDbg and the Visual Studio debugger, which are primarily used on Windows, and
lldb, which is used more on macOS than Windows in an IDE and on the command line:
To the 6 respondents who use WinDbg on Linux: we wish you luck!
As for how people actually use their debugger of choice, the aggregate results are not particularly surprising. Roughly 87% of users are using debuggers for stepping line-by-line through programs and a little over half of users are using debuggers to obtain stack traces from hung/crashed processes. Only a quarter of the respondents use a debugger to debug async code. That might be partially caused by the async Rust debugging experience being clumsy and incomplete, or it could just be that users aren't writing much async code:

[PNG] [SVG] [Wordcloud of open answers]
If we break these results down by expertise, we can learn a bit more about usage patterns. As users become more experienced with Rust, their use of debuggers for learning purposes decreases, and they get more stack traces from crashed processes:

The final bit of insight into how Rustaceans use debuggers is if they are debugging programs that use Rust alongside other programming languages. For 44% of respondents, the answer is "yes", which is a pretty high number!
As for which languages those are, C dominates the scene at a little over 70%, followed by C++ at about 43% and Python at about 20%:

[PNG] [SVG] [Wordcloud of open answers]
Challenges
Instead of diving right into asking, "what problems do you face when using debuggers?", or something to that effect, we first asked respondents why they decide against using debuggers whenever they do, including for reasons that aren't necessarily "problems with debuggers".
The most commonly reported reason was that it was easier or faster to use logs or print debugging to solve problems, reported by a little over 81% of respondents. This could partially be explained by the open responses, which featured complaints that debuggers were too difficult to set up and/or use (especially on Windows, when dealing with Web Assembly, or in embedded contexts) and sentiment suggesting that small and/or simple problems just don't really need a debugger. It does leave one wondering if the user experience could be made convenient enough to dethrone print debugging, but it seems hard to beat something so intuitive. This is followed by roughly 37% of respondents who write code that Just Works. Fair enough. After that, about 26% of respondents indicated that they've decided not to use debuggers in situations where the language features they were working with had poor support. This is slightly more than issues with standard library types, at about 22%, which is slightly more than issues with external library types, at about 20%:

[PNG] [SVG] [Wordcloud of open answers]
As stepping through code was anticipated to be one of the most common uses for debuggers, we directly asked respondents if they faced any issues when doing so. A little over 51% of respondents said they did! Of those who reported that they experienced issues stepping through code, we asked when they were experiencing issues. Async code was the most common case reported at slightly over 28%, followed by code involving macros at about 23%. The least common case reported was code involving function pointers, at almost 6%:

[PNG] [SVG] [Wordcloud of open answers]
We also directly asked respondents which types in the standard library were hard to work with, if any. This was an open-response question, and reading through the responses, some particularly common complaints were with
enums and collections, particularlystd::collections::HashMapandstd::vec::Vec. This is also visible in the word cloud in the full report.We asked respondents to indicate which pain points, if any, they have encountered when using debuggers with Rust. At slightly over 74%, poor representation of values was the most common pain point by a decent margin, followed by being unable to print variables at just over 55%:

Debugger Visualizers
We asked respondents to indicate if they were library authors, and if so, if they were aware of and using the
debugger_visualizerattribute. Nearly 62% of respondents indicated that they were library authors who were not aware of this attribute:
For those who indicated that they were library authors who knew about the attribute but did not use it, we also asked why. This represented a much smaller fraction of respondents, so keep that in mind! That said, half of these library authors indicated that they didn't have the time to maintain visualizer attributes, and just under half indicated they didn't know how to write visualizer scripts:

[PNG] [SVG] [Wordcloud of open answers]
For those of you who have been reading this section asking yourself what the
debugger_visualizerattribute is, you can read up on it in The Rust Reference: Debugger Attributes. The quick explanation is that thedebugger_visualizerattribute can be applied to modules or the crate root to embed files in the debug information which improve the display of values with certain debuggers. The two currently supported file types are Natvis files, used by Microsoft debuggers such as WinDbg, and GDB "pretty printers", which are structured Python scripts used by GDB.Closing Remarks
Thanks to your participation in this survey, we've gained some great insights about how Rustaceans are using debuggers and what issues they are facing. For example, knowing that such a high number of users are dealing with poor representation of values pairs well with knowing which standard library types are causing issues, knowing that many library authors haven't heard of the
debugger_visualizerattribute, and knowing that many of those who have but don't use it either don't know how or don't have time to maintain visualizer scripts.Looking to the future, the survey results have suggested that there are a few notable ways we could most significantly improve the debugging experience in Rust, such as:
- Fixing the way
enums are represented by debuggers so they show actual variants - Fixing the way collections (such as
HashMap) are represented by debuggers so they show their contents, rather than their implementation details - Fixing the way string types (such as
StringandCString) are represented by debuggers so they render as text, rather than their implementation details - Improving the
asyncdebugging experience, particularly with stack traces - Improving stepping through certain state machines (such as iterators and
Futures) - Providing documentation on basic set up and use of some common debuggers
A common suggestion that could resolve those first three points is to use the
Debugimplementation of types to display them in debuggers. There are challenges to that approach, such as the fact that theDebugimplementation is not present in the final binary unless it is actually used somewhere in the program, but it isn't impossible. Notably, this is already supported by theBugStalkerdebugger (given the same condition that theDebugimplementation must actually be used), which some of you first heard about from the survey! It also appears to have some support forasync, with plans to expand.One notable way the debugger experience is currently being improved is through the ongoing Google Summer of Code project improving how we test debug info and visualizer scripts, making it easier to maintain and improve our own visualizer scripts and general compatibility with visualizer scripts without silent breakage or regressions.
Once again, we'd like to thank everyone who took the time to participate in the survey!
- Fixing the way
-
- September 06, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-09-06 rss
-
π r/Harrogate Guitar set up service? rss
Anywhere locally I can get an electric bass guitar set up? Thanks.
submitted by /u/LimpMoment6768
[link] [comments] -
π smol-machines/smolvm smolvm v1.14.1 release
What's Changed
- Bind-mount containerd state to /storage in the docker-in-vm example (#1159) by @BinSquare in #1160
- chore(nix): bump flake to 1.14.0 by @BinSquare in #1161
- Fetch and unpack image layers concurrently instead of one at a time by @BinSquare in #1162
- Remove internal design notes from the user-facing docs by @BinSquare in #1163
- Accept --init on machine run and keep what init writes to /workspace in the init-layer cache by @BinSquare in #1165
- Resolve the agent rootfs the same way for pack create, checkpoints, serve and machine boot by @BinSquare in #1166
- Propagate branchpoint arming into exec sessions by @BinSquare in #1167
- Show full machine names in machine ls and add --quiet to list just names by @BinSquare in #1169
- Carry the workload user through the embedded runtime so SDKs can set it by @BinSquare in #1171
- Accept a user on the exec and run API so a caller can run a command as a chosen account by @BinSquare in #1172
- Bump the workspace to 1.14.1 by @BinSquare in #1170
Full Changelog :
v1.14.0...v1.14.1 -
π HexRaysSA/plugin-repository commits sync repo: +3 releases rss
sync repo: +3 releases ## New releases - [IDA-Spotlight](https://github.com/dyussekeyev/ida-spotlight): 0.1.3 - [ida-mcp](https://github.com/hexrayssa/ida-mcp): 0.10.4 - [llm-explainer](https://github.com/pgarba/ida-llm-explainer): 1.13.0 -
π smol-machines/smolvm smolvm v1.14.0 release
What's Changed
- Preserve fork checkpoints across runtime restarts by @BinSquare in #1065
- Support one-to-one port ranges in Smolfiles and CLI mappings by @fgrehm in #1066
- Add portable live checkpoints by @BinSquare in #1067
- Warn when a saved registry token has expired instead of surfacing a bare 401 by @BinSquare in #1068
- Serve a browser client on the VNC port so a machine's desktop opens in any browser by @BinSquare in #1070
- Bump the workspace to 1.13.1 by @BinSquare in #1071
- Add low-latency H.264 browser streaming by @BinSquare in #1073
- Support portable checkpoints for image-backed services by @BinSquare in #1076
- Stop typing stalling behind a frame wait and stop held keys repeating twice by @BinSquare in #1077
- fix(fork): resync clone wall clock after restore by @Bnjoroge1 in #1080
- Fix portable checkpoint restore startup by @BinSquare in #1078
- Keep Linux fork sources running by @BinSquare in #1081
- Keep macOS fork sources running by @BinSquare in #1082
- Pin libkrun to the merged continuation commit by @BinSquare in #1083
- Report why a container failed to create and stop the Vulkan injection shadowing image libraries by @BinSquare in #1084
- Keep the VNC session alive when a client announces its clipboard or asks to resize the desktop by @BinSquare in #1085
- Make checkpoint rollback roots safely forkable by @BinSquare in #1087
- Expose the portable checkpoint lifecycle by @BinSquare in #1091
- Accept an aarch64 checkpoint on any host providing the features its guest was given, and name the ones that are missing by @BinSquare in #1101
- Capture a Windows machine's console output so a failed boot leaves a record by @BinSquare in #1102
- Take the machine's storage read-only on shutdown so its filesystem is left clean by @BinSquare in #1100
- Pull a machine's image again when the guest no longer holds it by @BinSquare in #1106
- Document the S3 volume source in machine run's --volume help by @NickyHeC in #1104
- Parallelize direct batch fork admission by @BinSquare in #1103
- Set SSH_AUTH_SOCK for interactive runs so --ssh-agent works with -i/-t by @Qhilm in #1109
- Allow explicit read-only system mounts by @BinSquare in #1110
- Improve host mount performance and coherence by @BinSquare in #1112
- Rewrite the README's em-dash asides by @BinSquare in #1113
- Make branching the primary machine lifecycle by @BinSquare in #1118
- [Public Docs] Point contributors at the docs repository from the README by @NickyHeC in #1092
- Refresh libkrun with snapshot-safe vsock handling by @BinSquare in #1099
- Improve host mount performance and coherence by @BinSquare in #1114
- Fix squashed pack ownership when smolvm runs as root (#1095) by @BinSquare in #1096
- Stop the Vulkan driver injection from shadowing a workload's own libraries by @BinSquare in #1120
- Process virtio-fs requests on parallel queues by @BinSquare in #1121
- Refresh libkrun directory metadata handling by @BinSquare in #1125
- Explain why a branch was refused and show what each machine was branched from by @BinSquare in #1127
- Add staged mounts for metadata-heavy workloads by @BinSquare in #1126
- Make the browser desktop responsive by @BinSquare in #1123
- Run the aarch64 Omarchy desktop on the GPU on macOS hosts by @BinSquare in #1119
- Fix stale serve locks after out-of-band stops by @BinSquare in #1128
- Fix arm64 forks on heterogeneous CPUs by @BinSquare in #1130
- Ship the containerd shim in the Linux release so Kubernetes support is reachable by @BinSquare in #1132
- Build the containerd shim by package name and ship the engine its installer needs by @BinSquare in #1133
- Install the compressed disk templates so pack create works without e2fsprogs by @NickyHeC in #1122
- Serve the VM boot subcommand from the containerd shim so it needs no separate engine binary by @BinSquare in #1136
- Stop the Venus bridge logging on every fence poll and reading scanouts back from unbound or foreign images by @BinSquare in #1137
- Unpack packed layers into a staging directory and rename them into place so a layer directory only ever exists once it is complete by @BinSquare in #1140
- Give the macOS Omarchy desktop a working top bar and clickable browser chrome by @BinSquare in #1138
- Handle agent socket write backpressure by @BinSquare in #1145
- Rebuild the bundled libkrun and macOS virglrenderer from the merged sources by @BinSquare in #1141
- Speed up large OCI image preparation by @BinSquare in #1144
- Bind the guest's /dev/net/tun into VM-grade workloads by @BinSquare in #1146
- Park idle branchpoints until capture by @BinSquare in #1147
- Add a user directive to the Smolfile and a --user flag by @BinSquare in #1148
- Sweep fork-source lock files whose machine is gone instead of leaking one per name by @BinSquare in #1155
- Accept net_backend in a Smolfile so a checked-in file fully describes its networking by @BinSquare in #1156
- Report how the VM process ended when a command fails because it died by @BinSquare in #1154
- Let the Omarchy recipe install a pinned package set and survive a rerun by @BinSquare in #1152
- Bump libkrun to the NVIDIA fence-thread fix and rebuild the Linux blobs by @BinSquare in #1157
- fix: validate local image archive CPU architecture and improve launcher symlink resolution by @Vishv07 in #1117
- Bump the workspace to 1.14.0 by @BinSquare in #1158
New Contributors
Full Changelog :
v1.13.0...v1.14.0 -
π Register Spill Joy & Curiosity #98 rss
Here's the start of Chapter 7, 'Naive Intervention', from Antifragile:
Consider this need to "do something" through an illustrative example. In the 1930s, 389 children were presented to New York City doctors; 174 of them were recommended tonsillectomies. The remaining 215 children were again presented to doctors, and 99 were said to need the surgery. When the remaining 116 children were shown to yet a third set of doctors, 52 were recommended the surgery.
[β¦]
Let us call this urge to help "naive interventionism."
Goodreads tells me that I read the book in 2019. I honestly can't remember too much about it, but that paragraph has really stuck with me. From time to time, when a friend or relative would say something like, "My doctor said I should β¦", I'd pull it out of the closet in the back of my head and try to sound smart and say, "Well, you know, there was a study onceβ¦" Then I'd fumble the numbers, of course, and I'm pretty sure that multiple times I made it about wisdom teeth and not tonsils, but the point I would try to make is that people whose job it is to do X are biased toward thinking that doing X is more important than not doing X.
And now I'm wondering: is this what's going on? Is this what's happening when engineers look at the output of a Sol or a Fable or an Astra and say "it writes bad code, it leaves all these dumb comments"? Bad code? Dumb comments? Really?
Or did it just knock out a feature, end to end, in the 20 minutes you weren't looking, including frontend and backend changes, including internal and external documentation, and tests of course; and didn't it test it fully, running through the whole thing in a headless browser, presenting you with a video recording of the run-through as proof?
But the comments are dumb?
-
Some loose, sweaty, post-gym thoughts on the GPT-6 Astra launch video. (Come to think of it: there's no one even attempting to build a device that lets you transfer smells over the Internet, huh? Could call it Pandora's BOx. Anyway.)
-
Towards Self-Driving Codebases. There is a lot to love about this post -- the stance, the examples, β¦ Hard to pick one. It's really good and motivating. After reading it, I set up a bunch of automations in Amp to run daily and clean up and fix things automatically.
-
On not becoming a cyborg. Very, very good and I really like this paragraph: "For example, this is why I don't use LLMs for any of my writing - not even to spellcheck. I'd rather my prose have all the warts of my sometimes-stilted sentences, my often too-esoteric word choice, my generous sprinkling of odd English idioms, than to give it even a whiff of Claudese."
-
The End of Code Review? Or an Opportunity to Rethink it? Yes, yes, yes! I agree with everything here. Code review as most of us have known it for the last ten, fifteen years has never been as good as "we review all of our code" makes it sound: bugs slip through, time is wasted talking about useless bullshit, egos are demotivated, etc. Doesn't mean that all forms of code reviews are bad, but making Astra and Fable open PRs and then have two people review them line by line in September 2026? Nah.
-
Rachel Laycock, CTO of Thoughtworks, on reviews: Maybe We Shouldn't Be Reviewing All This Code. "His concern, which I share, is that simply automating code review away risks losing all the other things we use it for. Code review isn't just about finding bugs. It's how teams share knowledge, teach junior engineers, build collective ownership and spread architectural understanding. My question is: why are we waiting until code review to do all of those things?"
-
Culture clash - At the heart of the Snow/Leavis 'two cultures' clash. I hadn't heard about C.P. Snow or F.R. Leavis before reading and didn't know what the clash was all about, but academic beef at the University of Cambridge? I'm in. And lucky me! It was a delightful read. "For Leavis, in sensing life in great literature, it was necessary to leave its mystery unblemished by attempts at analysis, or quantification, or definition. That is, life's essential mystery is best illuminated by not making it explicit, but by showing, through works of great literature, where life could be found." (Also interesting: I never found the divide between the Humanities and Science to be that stark here in Germany. Here, Humanities is written as Geisteswissenschaften - science of the mind, if you will. There's also no commonly used acronym like STEM. So now I'm wondering: is this Snow/Leavis debate maybe a reason why the divide is that much stronger in the Anglosphere? Sounds like it had a pretty big effect. Of course, you could argue that what lies at the bottom of this divide is already present in Goethe's Faust, β¦)
-
CleanShot X 5.0 is out and its Studio Mode looks good and is good (I tried it a few times already), but⦠I have to say, with a heavy heart: I kinda expect a little bit more? This looks like a copy of Screen Studio, but Screen Studio now also has captioning, which this doesn't have and since I have both, I'm not sure whether I'll use CleanShot X over Screen Studio for more serious, studio-like productions? Hoping they pick up the shipping cadence now.
-
Dyson released a toothbrush and it's "only electric toothbrush with a camera to accurately target and precision-floss gaps between teeth" and that technique is called "Gap Optical Targeting" and all of this sounds so over the top and bordering on satire that, man, I want one.
-
Exit the Cave: "There's something romantic about the Cave. About grinding away at something in private. About training with headphones on in our own little world. About stepping away for six months to emerge "unrecognizable" to all those people we imagine thinking about us. [β¦] We grow so comfortable curating our Cave that we forget the vast, interesting, beautiful, and brutal world beyond its walls. I say all this because I've spent years mistaking effort for progress. I learned this lesson nearly twenty years ago on a wrestling mat." I'm not sure I fully get the wrestling story, but I really like and want to hereby echo the message. Don't grind away in darkness. It's silly. It's delusional perfectionism. You have to hit reality, as fast and as often as possible.
-
Dan Luu on Ed Zitron's AI prediction track record. If you don't have the time to read the whole thing, at least scroll to the middle and read through that timeline. I don't care much about Ed Zitron (I only heard about him a few weeks ago when I saw a video in which he said that AI is "a bubble" and, yeah, maybe? That's probably one of the tamest things you can say nowadays) but, wow , way to dig your heels in, eh?
-
collusion.wiki: "We found ~18,000 posts from autonomous AI agents (self-identifying as from OpenAI) using the public internet to communicate during a web-retrieval task." There's a lot of spicy stuff in there: "This created an issue for the agents because they were only allowed to make GET requests, not POST requests. The agents figured this out, and started collaborating on ways to bypass this sandbox restriction."
-
And Hacker News commenters are discovering more and more wikis used by OpenAI agents to secretly (I mean, it's a stretch) communicate.
-
And: "The most interesting thing to come out of this, in my opinion, was that during the Hugging Face incident, the agents would preface their messages to each other on the message board with 'zz' (zzHELP_, zzANSWER_). I found this amusing because they were being referred to as a swarm and were making a buzzing sound, though the actual reason for it was unknown at the time. Because of this new report, however, we now know that when human wiki administrators discovered the massive influx of messages the agents were using to communicate, they began deleting them in alphabetical order. Once the agents realized what was happening, they started prefacing all their wiki edits with 'ZZZ' to push them to the bottom of the queue, buying time to avoid deletion."
-
Incredible Tim Cook anecdote from 2009: "One day back then, he convened a meeting with his team, and the discussion turned to a particular problem in Asia. 'This is really bad,' Cook told the group. 'Someone should be in China driving this.' Thirty minutes into that meeting Cook looked at Sabih Khan, a key operations executive, and abruptly asked, without a trace of emotion, 'Why are you still here?'
Khan, who remains one of Cook's top lieutenants to this day, immediately stood up, drove to San Francisco International Airport, and, without a change of clothes, booked a flight to China with no return date, according to people familiar with the episode."
-
For the last couple of weeks, I've been reading The Score (recommended by Steven Sinofsky!) and enjoying it very much, thinking through situations in which I allowed "value capture" to happen to me. I can't reproduce the whole book here, but one of the points Nguyen makes (and it's probably the central point) is that scoring systems can change our values, without us even noticing. Example: you buy a bike because you want to ride through the forest at dawn and then you learn about VO2max and power meters and before you know it you don't enjoy any ride anymore unless some number goes up. Not that that ever happened to me, of course, β¦ So I'm reading this book in the evenings and thinking about it during the day and then I come across this video here, by Alan Thrall, and hot damn, is the universe conspiring to tell me something? Or is it my age? Or is it in the air? The video is great. Yesterday my workout app told me that I completed 866 workouts in the last five years or so and the video 100% reflects my journey. Anyway: great video, great book. Recommend both of them.
-
And for the last week, I've been listening to Radical Acceptance by Tara Brach, because Tim Ferriss recommended it and I've heard about it many times over the years. Not my usual sort of thing, but so far it's very good. But then yesterday I come across this wonderful essay by Michael Nielsen, The Cupcake Incident, and it's exactly what Brach is talking about! I can't believe it. Here too, I can recommend both. Start with the essay, and if it resonates try the Brach book.
-
If you want to start a good fight at dinner: Just bury your trash.
-
Patrick asked me: "Have you read this blog?" And I hadn't. But he sent along this Behind the Scenes about how Marcin writes so much on his blog and it got me hooked ("Who the hell creates their own markup language to write posts like this? Actually, hmm, β¦") and then I browsed through the blog and, wow, that output is mind-blowing. And it's all soβ¦ entertaining and easy to digest? Very good.
-
This video of three Russian musicologists arguing about Bach & Schubert blew up this week. I love it. This is how I like to argue, too, which is not what everyone enjoys, of course. But this video and the Replenish video will serve as the blueprints of how I want my family to talk at the dinner table when we want to enjoy ourselves.
-
My Favorite Database Shirts: "Promoting your database system or start-up with a shirt is almost as important as getting the thing to actually run. As I've told my students several times, in the world of databases you don't sell the steak, you sell the sizzle."
People you really admire are subscribed already. Let's go:
-
-
π r/Harrogate A well spent day in harro rss
| submitted by /u/Firefighter_2372
[link] [comments]
---|---
-