Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
236 commits
Select commit Hold shift + click to select a range
d6e119c
Kernel: Use a mutex for FileSystem::m_attach_count
spholz Nov 3, 2025
204be9c
Kernel/xHCI: Use finer-grained locks for the slot state
spholz Oct 29, 2025
a22dfa0
Kernel/xHCI: Replace some spinlocks with mutexes
spholz Oct 29, 2025
965a5b7
Kernel/xHCI: Migrate m_command_completion_queue to WaitQueue
spholz Oct 23, 2025
4ea10bb
Kernel/xHCI: Migrate m_event_queue to WaitQueue
spholz Oct 28, 2025
d71ab17
Kernel/xHCI: Migrate SyncPendingTransfer::wait_queue to WaitQueue
spholz Oct 29, 2025
44436f7
Kernel: Use a mutex for VFSRootContext::m_details
spholz Nov 3, 2025
a267901
AK+Kernel: Don't allow AK::String in the kernel
spholz Nov 15, 2025
e56be99
AK: Don't allow AK::ByteString in the kernel
spholz Nov 15, 2025
2323179
Kernel: Propagate errors in USBManagement::register_driver()
spholz Nov 16, 2025
ca4e519
AK: Guard some APIs that use Vector::append() behind `#ifndef KERNEL`
spholz Nov 15, 2025
7533096
AK+Kernel+Userland: Don't allow Vector::append() in the kernel
spholz Nov 15, 2025
ddead74
LibGfx/JBIG2Writer: Decouple segment data computation from writing
nico Nov 16, 2025
1af5c47
LibGfx/JBIG2Writer: Add support for files in random access organization
nico Nov 16, 2025
b6a3550
Tests/LibGfx: Add a JBIG2 file in random access organization
nico Nov 16, 2025
fc06741
LibGfx/JBIG2Shared: Give RegionSegmentInformationField rect() accessor
nico Nov 17, 2025
d77e42b
LibGfx/JBIG2Loader: Add support for refinement regions refining the page
nico Nov 16, 2025
00d4bb2
LibGfx/JBIG2Loader: Make decode_embedded() return BilevelImage
nico Nov 16, 2025
02aa8d2
LibGfx/JBIG2Writer: Put reference_bitmap computation into IIFE
nico Nov 16, 2025
3297442
LibGfx/JBIG2Writer: Make refinement reference image a BilevelSubImage
nico Nov 17, 2025
048c81f
LibGfx/JBIG2Writer: Add support for refinement regions refining the page
nico Nov 16, 2025
f88a74e
Tests/LibGfx: Add JBIG2 tests for refinement regions refining the page
nico Nov 16, 2025
f1b2d79
AK: Avoid copying the iterable container in AK::enumerate
trflynn89 Nov 17, 2025
45a6195
LibGfx/JBIG2Loader: Add method that returns intermediate region data
nico Nov 17, 2025
0c4930f
LibGfx/JBIG2Writer: Make a lambda return NonnullRefPtr
nico Nov 18, 2025
f98d1f7
LibGfx/JBIG2Writer: Extract collect_related_segments lambda
nico Nov 18, 2025
87a9b88
LibGfx/JBIG2+jbig2-from-json: Write intermediate halftone, text regions
nico Oct 17, 2025
d4ab786
Tests/LibGfx: Add JBIG2 tests for intermediate halftone and text regions
nico Nov 17, 2025
91f21d4
PixelPaint: Add "Change Levels..." menu entry to Image menu
Amogh-2404 Nov 17, 2025
4c031c2
LibGfx/JBIG2: Fix copy-pasto in diagnostic
nico Nov 14, 2025
ed1e48a
jbig2-from-json: Update outdated diagnostic text
nico Nov 18, 2025
02ad114
LibGfx/JBIG2Loader: Use try_append more
nico Nov 18, 2025
06ee4f7
Tests/LibGfx: Add JBIG2 text region compositing tests
nico Nov 19, 2025
ff1d59a
Kernel/ACPI: Remove bogus characters_without_null_termination()
spholz Nov 20, 2025
b7c5aa0
Tests/LibGfx: Remove a comment about a no-longer-missing test
nico Nov 19, 2025
bc5e40d
Tests/LibGfx: Remove a comment about another no-longer-missing test
nico Nov 19, 2025
4b999ed
jbig2-from-json: Rename jbig2_bitmap_from_json() to jbig2_load_bitmap()
nico Nov 19, 2025
7aa50be
jbig2-from-json: Allow cropping halftone match_image
nico Nov 19, 2025
c620662
Tests/LibGfx: Add JBIG2 halftone region compositing tests
nico Nov 19, 2025
b5f2325
LibWeb/HMTL: Avoid promotion to double by comparing against NaN<double>
LucasChollet Nov 10, 2025
57ef77c
LibC: Make NAN be a float
LucasChollet Nov 10, 2025
79b698a
Meta: Move two GCC-specific flags to the common compile options
LucasChollet Oct 16, 2025
9724d6c
Tests/LibGfx: Tweak bitmap-symbol-negative-sbdsoffset.json
nico Nov 20, 2025
86b49e3
LibGfx/JBIG2Loader: Allow SBDEFPIXEL != 0 for text regions
nico Nov 21, 2025
6f06965
Tests/LibGfx: Add JBIG2 test for inner text region composition
nico Nov 21, 2025
bf63269
AK: Expose Vector inline capacity as a constexpr member
spholz Nov 18, 2025
56fa2fa
AK+Userland: Don't allow initializer list Vector constructor in kernel
spholz Nov 18, 2025
3ecc891
AK+Userland: Don't allow ReadonlySpan Vector constructor in the kernel
spholz Nov 18, 2025
5b7fc5b
AK+Kernel+Userland: Don't allow Vector copy constructors in the kernel
spholz Nov 18, 2025
46c08c7
AK+Kernel+Userland: Don't allow Vector::resize() in the kernel
spholz Nov 19, 2025
0e03562
AK: Don't allow Vector::resize_and_keep_capacity() in the kernel
spholz Nov 19, 2025
b0d487e
AK: Don't allow Vector::shrink_to_fit() in the kernel
spholz Nov 19, 2025
eed2395
AK+Kernel: Don't allow Vector::grow_capacity() in the kernel
spholz Nov 19, 2025
90bbff5
AK+Kernel: Don't allow Vector::ensure_capacity() in the kernel
spholz Nov 19, 2025
23a77b9
jbig2-from-json: Fix copy-pasto in diagnostic
nico Nov 23, 2025
8e9473a
LibGfx/JBIG2Loader: Replace a VERIFY with a diagnostic for invalid input
nico Nov 23, 2025
148599a
LibGfx/JBIG2: Share RefinementContexts struct between loader and writer
nico Nov 22, 2025
0ea0e52
LibGfx/JBIG2Writer: Pass contexts to symbol dictionary procedure
nico Nov 23, 2025
c2f172a
LibGfx/JBIG2Writer: Support retaining and reusing symbol bitmap contexts
nico Nov 23, 2025
c9b3b8a
LibGfx/JBIG2Loader: Pass contexts to symbol dictionary procedure
nico Nov 22, 2025
8d9e3fd
LibGfx/JBIG2Loader: Support retaining and reusing symbol bitmap contexts
nico Nov 22, 2025
90defc5
Tests/LibGfx: Add a test for symbol dictionary context reuse
nico Nov 23, 2025
1637bd2
LibDeviceTree+Kernel: Rename interrupt_{identifier => specifier}
spholz Nov 19, 2025
a334bd8
Kernel/DeviceTree: Add a separate InterruptController ProbeStage
spholz Nov 23, 2025
83a3d73
Kernel/DeviceTree: Don't use DeviceRecipes for hardware timers
spholz Nov 23, 2025
bcafe9e
Kernel/DeviceTree: Don't use DeviceRecipes for interrupt controllers
spholz Nov 23, 2025
9a1f0e7
Kernel/DeviceTree: Remove the DeviceRecipe concept
spholz Nov 23, 2025
1e63740
Tests/LibGfx: Clean up JBIG2 reference corner tests
nico Nov 24, 2025
f589d40
Tests/LibGfx: Tweak JBIG2 text region composition test
nico Nov 24, 2025
10f6323
LibGfx/JBIG2Writer: Check that instance T is in current strip bounds
nico Nov 24, 2025
287f51a
LibRegex: Compatibility changes for sed
cofinalsubnets Nov 24, 2025
a01987d
LibRegex: Add tests for & and \0 substitution
cofinalsubnets Nov 24, 2025
c8e0488
Toolchain: Make BuildJakt.sh work with macOS's bash
nico Nov 25, 2025
d2b8cc2
Meta: Remove log output from jbig2_to_pdf.py
nico Nov 24, 2025
24a4e40
Tests/LibGfx: Make JBIG2 text region transpose tests json-based
nico Nov 24, 2025
50cb437
Meta: Make check-jbig2-json.sh verify all jbig2 files are json-generated
nico Nov 25, 2025
89406db
Meta: Prevent "HOMEBREW_PREFIX: unbound variable" in shell_include.sh
nico Nov 25, 2025
8a54fd9
Tests/LibGfx: Let jbig2/json/compile.sh process files in parallel
nico Nov 25, 2025
4b790c0
Meta+Tests/LibGfx: Make check-jbig2-json.sh call compile.sh
nico Nov 25, 2025
69d8caa
LibGfx: Give BilevelImage::create_from_bitmap() a fast path
nico Nov 25, 2025
0334a5c
Kernel/DeviceTree: Add a new interrupt translation API
spholz Nov 24, 2025
43004ee
Kernel/aarch64: Implement GIC devicetree interrupt translation
spholz Nov 24, 2025
f4b0f32
Kernel/aarch64: Implement RPi devicetree interrupt translation
spholz Nov 24, 2025
5c9d1c4
Kernel/riscv64: Implement PLIC devicetree interrupt translation
spholz Nov 24, 2025
7475043
Kernel/riscv64: Don't support #interrupt-cells = <2> for riscv,cpu-intc
spholz Nov 24, 2025
bf79b80
Kernel: Use the new devictree interrupt translation API everywhere
spholz Nov 24, 2025
95a49b1
LibPDF: Tolerate first object being an indirect null object
nico Nov 28, 2025
c0064c5
jbig2-from-json: Allow repeating a bitmap in image_data objects
nico Nov 28, 2025
6629aa5
Tests/LibGfx: Expand JBIG2 TPGDON tests
nico Nov 28, 2025
39df6d2
LibGfx/JBIG2: Make SLTP contexts bit order match compute_context() order
nico Nov 28, 2025
77d87a8
sed: Support strict POSIX regexes
cofinalsubnets Nov 25, 2025
cba7ca3
Ports: Update libatomic_ops to 7.10.0
ivmai Nov 28, 2025
93325d1
animation: Allow multiple input files
nico Nov 27, 2025
3ed6087
animation: Add --frame-duration-ms flag
nico Nov 27, 2025
f4fb135
LibGfx/JBIG2Loader: Fix typo in a JBIG2_DEBUG log line
nico Nov 29, 2025
23826c6
LibGfx/JBIG2Loader: Point out typo in spec comment
nico Nov 29, 2025
c3e74b9
Tests/LibGfx: Expand JBIG2 TPGRON tests
nico Nov 29, 2025
6403d42
Kernel: Remove a pointless semicolon
nico Nov 29, 2025
f5f9a75
Kernel: Only allow absolute paths when setting coredump directory
LucasChollet Nov 27, 2025
48b9e2a
Kernel+CrashDaemon: Use a ".partial" suffix for incomplete coredumps
LucasChollet Nov 11, 2025
c5ee2ff
CI: Bump actions/checkout from 5 to 6
dependabot[bot] Nov 24, 2025
0908108
Kernel: Use word-sized writes in the generic memset implementation
spholz Nov 26, 2025
50f57ea
Tests: Create the profiles directory
LucasChollet Dec 1, 2025
5873771
CI: Remove outdated FIXME
LucasChollet Dec 1, 2025
43e81ea
CI: Use a bigger disk size for coverage build
LucasChollet Dec 1, 2025
4503408
Meta: Automatically compute the number of inodes in the filesystem
LucasChollet Dec 2, 2025
0d02075
Meta: Download a more recent prepare-code-coverage-artifact.py
LucasChollet Dec 2, 2025
803a261
run-tests: Show the PID of the last-run test
LucasChollet Dec 2, 2025
5b78195
AK: Add IsPolymorphic
implicitfield Dec 2, 2025
a070f19
Kernel: De-templatefy ProcessorBase
implicitfield Dec 2, 2025
2a11dea
Meta: Expand compiler detection to clang 17–21
Sujit-Hiwale Dec 2, 2025
94ba721
Ladybird/Qt: Avoid promotions to double in WebContentView
spholz Dec 3, 2025
016743c
Kernel: Prevent lost wakeups in the idle loop
spholz Dec 2, 2025
33b3253
LibGfx/ICC+icc: Add --stdin-u8-to-pcs / --stdin-u8-from-pcs flags
nico Dec 1, 2025
b5be98b
CI: Remove the notify_twitter job
LucasChollet Dec 2, 2025
27001ce
icc: Apply comment tweak I missed to push to #26448
nico Dec 4, 2025
210591f
CI: Set the Buggie token when checking out the SerenityOS repo
trflynn89 Dec 4, 2025
a96b026
LibVT: Avoid divisions by zero when computing OSC 9 progress
LucasChollet Dec 4, 2025
6b59c6f
SpaceAnalyzer: Remove unused include
LucasChollet Dec 4, 2025
92067f8
SystemServer: Don't use sleep to wait for the GPU to appear
LucasChollet Dec 4, 2025
ebe8281
SystemServer: Log a message after waiting for the GPU for one second
LucasChollet Dec 4, 2025
4784eba
config: Remove the ability to add a group
LucasChollet Dec 3, 2025
b24b642
config: Enable printing a whole group or domain
LucasChollet Dec 3, 2025
ca8d74a
LibGfx/ICC: Rename Lut{16,8}TagData::evaluate() to evaluate_to_pcs()
nico Dec 4, 2025
bccf46d
LibGfx/ICC: Improve comments in Lut16TagData::evaluate_to_pcs()
nico Dec 4, 2025
a45b62f
Tests/LibGfx: Rename sRGB-specific tests to have "sRGB" in their name
nico Dec 4, 2025
d338754
Tests/LibGfx: Add a test for round-tripping through a matrix ICC profile
nico Dec 4, 2025
1122f0c
LibGfx/ICC: Add a 3D->ND overload of lerp_nd()
nico Dec 4, 2025
bad0b84
LibGfx/ICC: Rename rgb_header() to profile_header()
nico Dec 4, 2025
e9936a4
LibGfx/ICC+icc: Add a built-in identity LAB profile
nico Dec 4, 2025
1717c02
LibGfx/ICC: Implement coverting from PCS to Lut8TagData
nico Dec 4, 2025
0122b62
Base: Stop skipping UserspaceEmulator tests
LucasChollet Dec 3, 2025
cbe1333
CMake: Skip building some kernel tests for coverage builds
LucasChollet Dec 5, 2025
2647c9e
LibGfx/TIFFWriter: Write CMYK bitmaps in one call
nico Dec 6, 2025
5164d5b
LibGfx/ICC+image: Implement conversion to CMYK color spaces :^)
nico Dec 5, 2025
a412491
imgcmp: Print more details on difference, add --quiet, remove --count
nico Dec 6, 2025
0e16dee
Ports: Update ca-certificates to 2025-12-02
linusg Dec 6, 2025
ef831ca
Meta: Update cacert.pem to 2025-12-02
linusg Dec 6, 2025
c095b3a
LibC: Move a handful of functions into <sys/stat.h>
linusg Dec 6, 2025
5359a8a
Ports: Update coreutils to 9.9
linusg Dec 6, 2025
5541cad
Ports: Update nasm to 3.01
linusg Dec 6, 2025
8b6e97f
Ports: Update php to 8.5.0
linusg Dec 6, 2025
41d90fa
Ports: Update xz to 5.8.1
linusg Dec 6, 2025
56909e6
Tests: Sort CMakeLists alphabetically
alimpfard Dec 4, 2025
435b47d
Meta: Sort and properly format LibTest test subdirectories
alimpfard Dec 4, 2025
e9437e9
LibLine: Correctly count multi-code-point glyphs towards line length
alimpfard Dec 4, 2025
0e699a6
LibGfx/ICC+icc: Add a built-in XYZ profile
nico Dec 5, 2025
267a83e
LibGfx/ICC: Implement converting from PCS to Lut16TagData
nico Dec 5, 2025
b86e75a
LibGfx/ICC: Add a built-in LAB mft2 profile
nico Dec 5, 2025
026c3d8
Meta: Update Jakt to latest commit
alimpfard Dec 8, 2025
dde8dd9
Kernel/PCI: Clean up HostController::configure_attached_devices a bit
spholz Dec 6, 2025
0254131
Kernel/PCI: Configure I/O BARs on Devicetree systems
spholz Dec 6, 2025
1d23b47
Kernel/PCI: Support mapping I/O BARs on Devicetree systems
spholz Dec 6, 2025
9cc53b4
Kernel: Propagate errors in PCISerial16550
spholz Dec 6, 2025
09bad14
Kernel: Enable I/O Space accesses in PCISerial16550
spholz Dec 6, 2025
99164c9
Kernel: Add 'pci_serial_debug' cmdline argument
spholz Dec 6, 2025
5c1c4bd
Meta: Remove a useless if statement
spholz Dec 6, 2025
bad772f
Meta: Support SERENITY_RUN=ci on AArch64 and RISC-V
spholz Dec 6, 2025
5bbf06a
SystemServer: Don't attempt to remove sockets that weren't created
spholz Dec 7, 2025
d4b6d36
SystemServer: Use Core::System::unlink() to delete socket files
spholz Dec 7, 2025
d227c2b
Base: Skip running tests on RISC-V
spholz Dec 6, 2025
1638815
CI: Run on AArch64 and RISC-V in CI
spholz Dec 6, 2025
c9a0342
Kernel: Remove prev_irq_level from the x86-64 TrapFrame
implicitfield Sep 18, 2025
1500a4f
Kernel: Use the same TrapFrame on all architectures
implicitfield Dec 8, 2025
66367a7
Kernel: Share ProcessorBase::exit_trap between all architectures
implicitfield Dec 8, 2025
7740e5e
Kernel: Remove an unnecessary check
implicitfield Dec 8, 2025
b278e52
Kernel: Don't compare against Processor::current_in_irq() numerically
implicitfield Dec 8, 2025
0ac5c06
Kernel: Move general signal dispatching out of the scheduler
implicitfield Dec 7, 2025
e1001de
Kernel: Remove a check for a now-impossible signal dispatch result
implicitfield Dec 7, 2025
9b9f3ab
Kernel: Remove the ShouldYield enum and ScheduleResult::YieldAgain
implicitfield Dec 7, 2025
d0bc1cc
Tests: Add a test to make sure that spinning processes receive signals
implicitfield Dec 8, 2025
da3dbe3
LibC: Support null argv and envp in execve
LucasChollet Dec 5, 2025
bf2c6e2
CI: Stop using BUGGIEBOT_TOKEN for repository checkouts
gmta Dec 9, 2025
24b0235
CI: Upload wasm artifact on all branches
gmta Dec 9, 2025
6b6df83
Kernel/VFS: Add root filesystem to the global filesystem list
spholz Dec 9, 2025
e98818f
CI: Don't use timestamps as cache keys for TimeZone and Unicode caches
spholz Dec 7, 2025
c93a05f
LibGfx/TIFF: Allow exploring IFDs that occur earlier in the file
LucasChollet Dec 6, 2025
4d39bea
Meta: Add Lucas Chollet to the maintainers list :^)
nico Dec 10, 2025
2f7bdbb
CI: Pin the checkout action to version 6.0.1
trflynn89 Dec 10, 2025
670b608
CI: Remove workaround for cross-repo file deployments
trflynn89 Dec 10, 2025
baddcc6
CI: Don't save ccache caches from pull requests
LucasChollet Dec 10, 2025
f9cb1b9
icc: Mention XYZ in the -n help
nico Dec 10, 2025
cb0d9e8
LibGfx/ICC+icc: Add built-in profiles using `mAB ` / `mBA ` tags
nico Dec 6, 2025
ffe6710
LibGfx/ICC: Implement converting from PCS to LutBToATagData with clut
nico Dec 5, 2025
496053d
Kernel: Don't context-switch when dispatching signals in exit_trap
implicitfield Dec 10, 2025
3dc3441
Kernel: VERIFY that s_hardware_timers is empty when adding legacy timers
implicitfield Dec 6, 2025
1b4f9d3
Kernel/Memory: Allow getting a pointer to a matching chunk in MappedROM
implicitfield Dec 6, 2025
aa0fdef
Kernel: Validate ACPI checksums (and skip invalid tables)
implicitfield Dec 6, 2025
56c91f4
LibGfx/JBIG2: Move halftone skip pattern construction to JBIG2Shared
nico Dec 18, 2025
4444e45
LibGfx/JBIG2Writer: Add support for writing halftone skip patterns
nico Dec 18, 2025
5d7f55b
Tests/LibGfx: Add a JBIG2 halftone test with enable_skip set
nico Dec 18, 2025
1405d09
LibGfx/JBIG2Writer: Remove an incorrect fixme
nico Dec 18, 2025
66ff924
Maps: Handle JSON parsing errors in search results
egedolmaci Dec 20, 2025
802c2bc
PixelPaint: Remove misleading FIXME in Median filter
egedolmaci Dec 21, 2025
56031a4
LibGfx/JBIG2Writer: Add a spec comment
nico Dec 19, 2025
9f02a15
jbig2-from-json: Remove unused variable
nico Dec 21, 2025
af49640
LibGfx/JBIG2Writer+jbig2-from-json: Allow non-identity halftone grids
nico Dec 21, 2025
815506b
Tests/LibGfx: Add a JBIG2 halftone test with a non-identity grid
nico Dec 21, 2025
e2f09f6
Tests/LibGfx: Add JBIG2 halftone test with rotated grid and enable_skip
nico Dec 21, 2025
68ec1bb
Tests/LibGfx: More halftone tests with rotated grid and enable_skip
nico Dec 22, 2025
b6dbe9a
jbig2-from-image: Don't crash on halftone region without image_data key
nico Dec 23, 2025
8d1617c
jbig2-from-image: Allow array for pattern dictionary image_data
nico Dec 23, 2025
624fb57
Tests/LibGfx: Add JBIG2 test for inner halftone region composition
nico Dec 23, 2025
d476ddc
LibGfx/Tests: Make JBIG2 composition tests for "or" more thorough
nico Dec 23, 2025
5794b6a
LibGfx/Tests: Make text region composition test for "and" more thorough
nico Dec 24, 2025
8ffbbe1
CI: Add a label-triggered workflow for coverage builds
LucasChollet Dec 9, 2025
0735a24
CI: Don't save caches for coverage builds
LucasChollet Dec 10, 2025
be686a7
LibGfx/JBIG2: Use ceil_log2 more
nico Dec 24, 2025
df8907c
LibGfx/JBIG2: Handle text regions, symbol dictionaries without symbols
nico Dec 24, 2025
520769d
Ports/openssh: Pledge sigaction in scp
oskar-skog Dec 14, 2025
22ac4a5
CI: Show the current cache storage before using it
LucasChollet Dec 24, 2025
6d8c930
Kernel/aarch64: Use the clock-frequency timer property, if present
spholz Dec 24, 2025
fa590d1
Kernel: Print the kernel cmdline later
spholz Dec 24, 2025
415adca
LibGfx/JBIG2Loader: Rename Power JBIG2 quirks mode variable
nico Dec 27, 2025
cd1b0dc
LibGfx/JBIG2Loader+jbig2-from-json: Make JBIG2Loader strictness settable
nico Dec 27, 2025
0a016f1
LibGfx/JBIG2Loader: In permissive mode, allow refs to dead symbol dicts
nico Dec 27, 2025
71e5907
LibGfx/JBIG2Loader: Make a JBIG2 quirk slightly less permissive
nico Dec 27, 2025
45c4db0
LibGfx/JBIG2Writer+Tests/LibGfx: Refinement of symbol strip refines
nico Dec 27, 2025
3e31529
Kernel/VirtIO: Require VIRTIO_F_IN_ORDER for Console device
po-nuvai Dec 29, 2025
3274f5f
Kernel/Input: Use atomic operations for device minor number generation
po-nuvai Dec 29, 2025
e23fcd9
LibCore: Retry read() and write() syscalls on EINTR
po-nuvai Dec 29, 2025
0564bec
AK+Userland+Kernel+Tests: Deduplicate IPv4 header checksumming
implicitfield Dec 10, 2025
f7c00e0
Everywhere: Fix spelling errors in comments
po-nuvai Dec 29, 2025
b25acde
tar: Return error instead of panic for XZ compression
po-nuvai Dec 29, 2025
6996a45
Revert "Kernel/VirtIO: Require VIRTIO_F_IN_ORDER for Console device"
spholz Dec 29, 2025
aa2b9aa
Tests/LibGfx: Sort symbols by width in symbolrefine-textrefine.jbig2
nico Dec 29, 2025
32102e0
Tests/LibGfx: Add huffman-coded version of symbolrefine-textrefine.jbig2
nico Dec 29, 2025
cb89db9
Tests/LibGfx: Test JBIG2 16-bit and 32-bit referred-to segment numbers
nico Dec 30, 2025
05d29b1
LibGfx: Make Bayer dithering more luminosity-conservative
LucasChollet Nov 27, 2025
26efe19
Kernel/xHCI: Explicitly allow 0-sized normal transfers
Hendiadyoin1 Dec 8, 2025
cb341b1
Kernel/USB: Allow fetching string descriptor
Hendiadyoin1 Dec 8, 2025
aaaa0bb
Kernel/USB: Add a basic CDC driver skeleton
Hendiadyoin1 Dec 8, 2025
4b51ff2
Kernel/Net: Add a USB CDC-ECM Network Adapter Driver
Hendiadyoin1 Dec 8, 2025
5db876a
Wip: Refactor
Hendiadyoin1 Dec 11, 2025
9b9bbf5
Kernel/Net: Initialize Network adapters outside of collection lock
Hendiadyoin1 Jan 1, 2026
c6a5c05
Kernel/Net: Hackily allow registering NetworkAdapters after NetworkTask…
Hendiadyoin1 Jan 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 12 additions & 9 deletions .github/actions/cache-restore/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,15 @@ runs:
echo "toolchain_version=$(echo ${version} | cut -d'.' -f1)" >> $GITHUB_OUTPUT
fi

- name: 'Show cache storage'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
echo "::group::gh cache list"
gh cache list --limit 100
echo "::endgroup::"

- name: 'Toolchain Prebuilt Cache'
uses: actions/cache/restore@v4
id: 'toolchain-prebuilt'
Expand Down Expand Up @@ -154,22 +163,16 @@ runs:
uses: actions/cache@v4
with:
path: ${{ inputs.download_cache_path }}/TZDB
key: TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}-${{ steps.date-stamp.outputs.timestamp }}
restore-keys: |
TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}
key: TimeZoneData-${{ hashFiles('Meta/CMake/time_zone_data.cmake') }}

- name: 'UnicodeData cache'
uses: actions/cache@v4
with:
path: ${{ inputs.download_cache_path }}/UCD
key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}-${{ steps.date-stamp.outputs.timestamp }}
restore-keys: |
UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}
key: UnicodeData-${{ hashFiles('Meta/CMake/unicode_data.cmake') }}

- name: 'UnicodeLocale cache'
uses: actions/cache@v4
with:
path: ${{ inputs.download_cache_path }}/CLDR
key: UnicodeLocale-${{ hashFiles('Meta/CMake/locale_data.cmake') }}-${{ steps.date-stamp.outputs.timestamp }}
restore-keys: |
UnicodeLocale-${{ hashFiles('Meta/CMake/locale_data.cmake') }}
key: UnicodeLocale-${{ hashFiles('Meta/CMake/locale_data.cmake') }}
21 changes: 20 additions & 1 deletion .github/actions/cache-save/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,16 @@ inputs:
runs:
using: "composite"
steps:
- name: 'Show cache storage'
shell: bash
env:
GH_TOKEN:
${{ github.token }}
run: |
echo "::group::gh cache list"
gh cache list --limit 100
echo "::endgroup::"

- name: 'Toolchain Prebuilt Cache'
uses: actions/cache/save@v4
# Do not waste time and storage space by updating the toolchain cache from a PR,
Expand Down Expand Up @@ -82,7 +92,7 @@ runs:

- name: 'Serenity Compiler Cache'
uses: actions/cache/save@v4
if: ${{ inputs.serenity_ccache_path != '' }}
if: ${{ github.event_name != 'pull_request' && inputs.serenity_ccache_path != '' }}
with:
path: ${{ inputs.serenity_ccache_path }}
key: ${{ inputs.serenity_ccache_primary_key }}
Expand All @@ -95,3 +105,12 @@ runs:

echo "Serenity Compiler Cache"
CCACHE_DIR=${{ inputs.serenity_ccache_path }} ccache -s

- name: 'Show cache storage'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
echo "::group::gh cache list"
gh cache list --limit 100
echo "::endgroup::"
2 changes: 1 addition & 1 deletion .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ runs:

sudo apt-get update
sudo apt-get remove clang-{14..18} clang++-{14..18} libclang-{14..18}-dev llvm-{14..18}
sudo apt-get install clang-format-20 ccache e2fsprogs libmpfr-dev libmpc-dev optipng qemu-utils qemu-system-i386 generate-ninja libegl1-mesa-dev
sudo apt-get install clang-format-20 ccache e2fsprogs libmpfr-dev libmpc-dev optipng qemu-utils qemu-system-i386 qemu-system-arm qemu-system-riscv64 generate-ninja libegl1-mesa-dev
sudo apt-get install clang-20 clang++-20 llvm-20 llvm-20-dev

- name: Enable KVM group perms
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dev-container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
steps:

- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6.0.1

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/label-pull-requests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ jobs:
label_pull_request:
runs-on: ubuntu-24.04
if: always() && github.repository == 'SerenityOS/serenity'

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1

- name: Label pull request
uses: actions/github-script@v8
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lagom-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
# Pull requests can trail behind `master` and can cause breakage if merging before running the CI checks on an updated branch.
# Luckily, GitHub creates and maintains a merge branch that is updated whenever the target or source branch is modified. By
# checking this branch out, we gain a stabler `master` at the cost of reproducibility.
- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
if: ${{ github.event_name != 'pull_request' }}

- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
if: ${{ github.event_name == 'pull_request' }}
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/manpages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,21 @@ on:
jobs:
convert_using_pandoc:
runs-on: ubuntu-24.04
if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'
if: github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false

- uses: r-lib/actions/setup-pandoc@v2
with:
pandoc-version: '2.13'

- name: Actually build website
run: ./Meta/build-manpages-website.sh

- name: Deploy to GitHub pages
uses: JamesIves/github-pages-deploy-action@v4.7.4
uses: JamesIves/github-pages-deploy-action@v4.7.6
with:
git-config-name: BuggieBot
git-config-email: buggiebot@serenityos.org
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/pull-requests-label-workflows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Label Workflows

on:
pull_request:
types: [ labeled, opened, synchronize, reopened ]

jobs:
Coverage:
if: github.repository == 'SerenityOS/serenity' && contains(github.event.pull_request.labels.*.name, '📑 pr-run-coverage-build')
uses: ./.github/workflows/serenity-template.yml
with:
toolchain: 'Clang'
os: ubuntu-24.04
arch: 'x86_64'
coverage: 'ON'
15 changes: 10 additions & 5 deletions .github/workflows/serenity-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ jobs:
# Pull requests can trail behind `master` and can cause breakage if merging before running the CI checks on an updated branch.
# Luckily, GitHub creates and maintains a merge branch that is updated whenever the target or source branch is modified. By
# checking this branch out, we gain a stabler `master` at the cost of reproducibility.
- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
if: ${{ github.event_name != 'pull_request' }}

- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
if: ${{ github.event_name == 'pull_request' }}
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
Expand All @@ -50,6 +50,11 @@ jobs:
os: 'Serenity'
arch: ${{ inputs.arch }}

- name: Set Disk Size for Coverage Builds
if: ${{ inputs.coverage == 'ON' }}
# Using 5GiB here is arbitrary.
run: echo "SERENITY_DISK_SIZE_BYTES=5368709120" >> $GITHUB_ENV

# === PREPARE FOR BUILDING ===

- name: Lint
Expand Down Expand Up @@ -135,6 +140,7 @@ jobs:
CCACHE_DIR: ${{ env.SERENITY_CCACHE_DIR }}

- name: Save Caches
if: ${{ inputs.coverage == 'OFF' }}
uses: ./.github/actions/cache-save
with:
arch: ${{ inputs.arch }}
Expand All @@ -157,7 +163,7 @@ jobs:
run: ninja install && ninja qemu-image

- name: Run On-Target Tests
if: ${{ inputs.debug_options == 'NORMAL_DEBUG' && inputs.arch != 'aarch64' && inputs.arch != 'riscv64' }}
if: ${{ inputs.debug_options == 'NORMAL_DEBUG' }}
working-directory: ${{ steps.build-parameters.outputs.build_directory }}
env:
SERENITY_QEMU_CPU: "max,vmx=off"
Expand Down Expand Up @@ -200,11 +206,10 @@ jobs:
SERENITY_ARCH: ${{ inputs.arch }}

# FIXME: Deploy the static html pages somewhere
# FIXME: Alter script to also (instead?) produce a raw coverage.txt file for ingestion into sonar cloud
# Note: tmp_profile_data/Coverage.profdata has the entire combined profile data, but creating the raw txt requires
# all of the instrumented binaries and the profdata file.
- name: Upload Coverage Results
if: ${{ inputs.coverage == 'ON' }}
if: ${{ inputs.coverage == 'ON' && github.event_name != 'pull_request' }}
uses: actions/upload-artifact@v5
with:
name: serenity-coverage
Expand Down
22 changes: 1 addition & 21 deletions .github/workflows/social-media.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,12 @@ name: Social media notifications
on: [ push ]

jobs:
notify_twitter:
runs-on: ubuntu-24.04
if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'

steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
with:
node-version: '14'
- run: npm i twit
- run: |
node ${{ github.workspace }}/Meta/tweet-commits.js << 'EOF'
${{ toJSON(github.event) }}
EOF
env:
CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
ACCESS_TOKEN_SECRET: ${{ secrets.ACCESS_TOKEN_SECRET }}

notify_mastodon:
runs-on: ubuntu-24.04
if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6.0.1
- uses: actions/setup-node@v6
with:
node-version: '14'
Expand Down
12 changes: 7 additions & 5 deletions .github/workflows/wasm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,19 @@ jobs:
if: github.repository == 'SerenityOS/serenity'
strategy:
fail-fast: false

steps:
- name: Checkout SerenityOS/serenity
uses: actions/checkout@v5
uses: actions/checkout@v6.0.1
with:
persist-credentials: false

- name: Checkout SerenityOS/libjs-data libjs-wasm
uses: actions/checkout@v5
uses: actions/checkout@v6.0.1
with:
repository: SerenityOS/libjs-data
path: libjs-data
ref: libjs-wasm
repository: SerenityOS/libjs-data

- name: "Set up environment"
uses: ./.github/actions/setup
Expand Down Expand Up @@ -97,7 +100,7 @@ jobs:
tar --exclude='.[^/]*' -czvf libjs-wasm.tar.gz -C ${{ github.workspace }}/libjs-data .

- name: Deploy to GitHub
uses: JamesIves/github-pages-deploy-action@v4.7.4
uses: JamesIves/github-pages-deploy-action@v4.7.6
if: github.ref == 'refs/heads/master'
with:
git-config-name: BuggieBot
Expand All @@ -108,7 +111,6 @@ jobs:
folder: ${{ github.workspace }}/libjs-data

- name: Upload artifact package
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v5
with:
name: serenity-js-wasm
Expand Down
4 changes: 4 additions & 0 deletions AK/ByteString.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@

#pragma once

#ifdef KERNEL
# error This file should not be included in the kernel. Use KString instead.
#endif

#include <AK/Format.h>
#include <AK/Forward.h>
#include <AK/RefPtr.h>
Expand Down
1 change: 1 addition & 0 deletions AK/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ set(AK_SOURCES
FuzzyMatch.cpp
GenericLexer.cpp
Hex.cpp
InternetChecksum.cpp
JsonObject.cpp
JsonParser.cpp
JsonPath.cpp
Expand Down
42 changes: 18 additions & 24 deletions AK/Enumerate.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
namespace AK {

namespace Detail {

template<typename Iterable>
class Enumerator {
struct Enumerator {
using IteratorType = decltype(declval<Iterable>().begin());
using ValueType = decltype(*declval<IteratorType>());

Expand All @@ -21,35 +22,28 @@ class Enumerator {
ValueType value;
};

public:
Enumerator(Iterable&& iterable)
: m_iterable(forward<Iterable>(iterable))
, m_iterator(m_iterable.begin())
, m_end(m_iterable.end())
{
}

Enumerator const& begin() const { return *this; }
Enumerator const& end() const { return *this; }
struct Iterator {
Enumeration operator*() { return { index, *iterator }; }
Enumeration operator*() const { return { index, *iterator }; }

Enumeration operator*() { return { m_index, *m_iterator }; }
Enumeration operator*() const { return { m_index, *m_iterator }; }
bool operator!=(Iterator const& other) const { return iterator != other.iterator; }

bool operator!=(Enumerator const&) const { return m_iterator != m_end; }
void operator++()
{
++index;
++iterator;
}

void operator++()
{
++m_index;
++m_iterator;
}
size_t index { 0 };
IteratorType iterator;
};

private:
Iterable m_iterable;
Iterator begin() { return { 0, iterable.begin() }; }
Iterator end() { return { 0, iterable.end() }; }

size_t m_index { 0 };
IteratorType m_iterator;
IteratorType const m_end;
Iterable iterable;
};

}

template<typename T>
Expand Down
Loading
Loading