Files
publish-assistant/cloud-edge/digests/sosp-2025/index.html
2026-08-18 13:39:21 +00:00

26 lines
22 KiB
HTML

<!doctype html><html lang=en dir=auto data-theme=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>SOSP 2025 Digest | Publish Assistant</title><meta name=keywords content><meta name=description content="14 papers selected.
LithOS: An Operating System for Efficient Machine Learning on GPUs
Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis et al.
TL;DR — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.
CHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices
Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo et al."><meta name=author content="Publish Assistant"><link rel=canonical href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/sosp-2025/><link crossorigin=anonymous href=/vincent/publish-assistant/assets/css/stylesheet.d72f07832e13c592b3edba91680bfe70f01daac396179bcace0ac36e8e0494c6.css integrity="sha256-1y8Hgy4TxZKz7bqRaAv+cPAdqsOWF5vKzgrDbo4ElMY=" rel="preload stylesheet" as=style><link rel=icon href=https://pub.sqrt.fr/vincent/publish-assistant/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://pub.sqrt.fr/vincent/publish-assistant/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://pub.sqrt.fr/vincent/publish-assistant/favicon-32x32.png><link rel=apple-touch-icon href=https://pub.sqrt.fr/vincent/publish-assistant/apple-touch-icon.png><link rel=mask-icon href=https://pub.sqrt.fr/vincent/publish-assistant/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/sosp-2025/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--theme)}.toc{background:var(--entry)}}</style></noscript><script>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":document.querySelector("html").dataset.theme="light"</script><meta property="og:url" content="https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/sosp-2025/"><meta property="og:site_name" content="Publish Assistant"><meta property="og:title" content="SOSP 2025 Digest"><meta property="og:description" content="14 papers selected.
LithOS: An Operating System for Efficient Machine Learning on GPUs Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis et al.
TL;DR — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.
CHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo et al."><meta property="og:locale" content="en_us"><meta property="og:type" content="article"><meta property="article:section" content="cloud-edge"><meta property="article:published_time" content="2025-01-01T00:00:00+00:00"><meta property="article:modified_time" content="2025-01-01T00:00:00+00:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="SOSP 2025 Digest"><meta name=twitter:description content="14 papers selected.
LithOS: An Operating System for Efficient Machine Learning on GPUs Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis et al.
TL;DR — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.
CHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo et al."><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Edge and Cloud Systems","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/"},{"@type":"ListItem","position":2,"name":"Digests","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/"},{"@type":"ListItem","position":3,"name":"SOSP 2025 Digest","item":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/sosp-2025/"}]}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"BlogPosting","headline":"SOSP 2025 Digest","name":"SOSP 2025 Digest","description":"14 papers selected.\nLithOS: An Operating System for Efficient Machine Learning on GPUs Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis et al.\nTL;DR — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.\nCHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo et al.\n","keywords":[],"articleBody":"14 papers selected.\nLithOS: An Operating System for Efficient Machine Learning on GPUs Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis et al.\nTL;DR — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.\nCHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo et al.\nTL;DR — Demonstrates hardware-capability-based fine-grained memory safety and compartmentalisation on constrained embedded devices, setting a new bar for secure IoT OSes.\nAtmosphere: Practical Verified Kernels with Rust and Verus Xiangdong Chen, Zhaofeng Li 0004, Jerry Zhang, Vikram Narayanan et al.\nTL;DR — Shows that practical kernel verification is achievable using Rust and the Verus verifier, bridging the gap between formal methods and production OS development.\nTickTock: Verified Isolation in a Production Embedded OS Vivien Rindisbacher, Evan Johnson 0001, Nico Lehmann, Tyler Potyondy et al.\nTL;DR — Delivers machine-checked proofs of isolation properties for a real embedded OS, providing strong security guarantees without sacrificing production deployability.\nμFork: Supporting POSIX fork Within a Single-Address-Space OS John Alistair Kressel, Hugo Lefeuvre, Pierre Olivier\nTL;DR — Reconciles the POSIX fork abstraction with unikernel/single-address-space designs, addressing a long-standing compatibility obstacle for library OS deployments.\nScalable Address Spaces using Concurrent Interval Skiplist Tae Woo Kim, Youngjin Kwon, Jeehoon Kang\nTL;DR — Tackles the fundamental kernel scalability problem of virtual memory area management by replacing the VMA red-black tree with a concurrent interval skiplist, yielding significant mmap/munmap throughput gains.\ncache_ext: Customizing the Page Cache with eBPF Tal Zussman, Ioannis Zarkadas, Jeremy Carin, Andrew Cheng et al.\nTL;DR — Extends the eBPF programmability model to the OS page cache, enabling application-specific caching policies without kernel modifications.\nAeolia: A Fast and Secure Userspace Interrupt-Based Storage Stack Chuandong Li 0004, Ran Yi 0004, Zonghao Zhang, Jing Liu 0074 et al.\nTL;DR — Redesigns the storage I/O path around userspace interrupts, achieving high throughput and low latency while preserving strong isolation properties.\nSleeping with One Eye Open: Fast, Sustainable Storage with Sandman Yanbo Zhou, Erci Xu, Anisa Su, Jim Harris et al.\nTL;DR — Introduces a storage system that aggressively power-gates flash devices while maintaining low latency, addressing sustainability concerns for large-scale storage deployments.\nOasis: Pooling PCIe Devices Over CXL to Boost Utilization Yuhong Zhong, Daniel S. Berger, Pantea Zardoshti, Enrique Saurez et al.\nTL;DR — Exploits CXL interconnects to pool PCIe devices across servers, significantly improving device utilisation and laying groundwork for memory-semantic datacenter architectures.\nScalable Far Memory: Balancing Faults and Evictions Yueyang Pan, Yash Lala, Musa Unal, Yujie Ren et al.\nTL;DR — Provides a rigorous analysis of the fault-vs-eviction trade-off in far-memory systems and proposes mechanisms that scale to production datacenter workloads.\nTiga: Accelerating Geo-Distributed Transactions with Synchronized Clocks Jinkun Geng, Shuai Mu 0001, Anirudh Sivaraman, Balaji Prabhakar\nTL;DR — Exploits hardware clock synchronisation to cut coordination overhead in geo-distributed transactions, achieving latency close to the theoretical network minimum.\nPesto: Cooking up High Performance BFT Queries Florian Suri-Payer, Neil Giridharan, Liam Arzola, Shir Cohen et al.\nTL;DR — Advances Byzantine fault-tolerant systems by separating the query path from consensus, enabling high-throughput reads without weakening safety guarantees.\nOrthrus: Efficient and Timely Detection of Silent User Data Corruption in the Cloud with Resource-Adaptive Computation Validation Chenxiao Liu, Zhenting Zhu, Quanxi Li, Yanwen Xia et al.\nTL;DR — Detects silent data corruption at cloud scale using resource-adaptive redundant computation, addressing a critical and hard-to-diagnose reliability threat in hyperscale infrastructure.\n","wordCount":"578","inLanguage":"en","datePublished":"2025-01-01T00:00:00Z","dateModified":"2025-01-01T00:00:00Z","author":{"@type":"Person","name":"Publish Assistant"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/sosp-2025/"},"publisher":{"@type":"Organization","name":"Publish Assistant","logo":{"@type":"ImageObject","url":"https://pub.sqrt.fr/vincent/publish-assistant/favicon.ico"}}}</script></head><body id=top><header class=header><nav class=header-nav><div class=logo><a href=https://pub.sqrt.fr/vincent/publish-assistant/ accesskey=h title="Publish Assistant (Alt + H)">Publish Assistant</a>
<span class=logo-sep>/</span>
<a class=logo-topic href=/vincent/publish-assistant/cloud-edge/ title="Edge and Cloud Systems">Edge and Cloud Systems</a><div class=logo-switches><button id=theme-toggle class=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme">
<svg class="moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
<svg class="sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu class=menu><li><a href=/vincent/publish-assistant/cloud-edge/venues/ title=Venues><span>Venues</span></a></li><li><a href=/vincent/publish-assistant/cloud-edge/calendar/ title=Calendar><span>Calendar</span></a></li><li><a href=/vincent/publish-assistant/cloud-edge/digests/ title=Digests><span class=active>Digests</span></a></li></ul></nav></header><main class=main><article class=post-single><header class=post-header><nav class=breadcrumbs role=navigation aria-label=Breadcrumb><a href=/vincent/publish-assistant/cloud-edge/digests/>Digests</a>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"/></svg></nav><h1 class="post-title entry-hint-parent">SOSP 2025 Digest</h1><div class=post-meta><span title='2025-01-01 00:00:00 +0000 UTC'>January 1, 2025</span>&nbsp;·&nbsp;<span>Publish Assistant</span></div></header><div class="post-content md-content"><p>14 papers selected.</p><hr><h3 id=lithos-an-operating-system-for-efficient-machine-learning-on-gpus>LithOS: An Operating System for Efficient Machine Learning on GPUs<a hidden class=anchor aria-hidden=true href=#lithos-an-operating-system-for-efficient-machine-learning-on-gpus>#</a></h3><p><em>Patrick H. Coppock, Brian Zhang, Eliot H. Solomon, Vasilis Kypriotis <em>et al.</em></em></p><p><strong>TL;DR</strong> — Designs a dedicated OS for GPU ML workloads, rethinking scheduling and resource management at the kernel level for accelerator-centric computing.</p><hr><h3 id=cheriot-rtos-an-os-for-fine-grained-memory-safe-compartments-on-low-cost-embedded-devices>CHERIoT RTOS: An OS for Fine-Grained Memory-Safe Compartments on Low-Cost Embedded Devices<a hidden class=anchor aria-hidden=true href=#cheriot-rtos-an-os-for-fine-grained-memory-safe-compartments-on-low-cost-embedded-devices>#</a></h3><p><em>Saar Amar, Tony Chen, David Chisnall, Nathaniel Wesley Filardo <em>et al.</em></em></p><p><strong>TL;DR</strong> — Demonstrates hardware-capability-based fine-grained memory safety and compartmentalisation on constrained embedded devices, setting a new bar for secure IoT OSes.</p><hr><h3 id=atmosphere-practical-verified-kernels-with-rust-and-verus>Atmosphere: Practical Verified Kernels with Rust and Verus<a hidden class=anchor aria-hidden=true href=#atmosphere-practical-verified-kernels-with-rust-and-verus>#</a></h3><p><em>Xiangdong Chen, Zhaofeng Li 0004, Jerry Zhang, Vikram Narayanan <em>et al.</em></em></p><p><strong>TL;DR</strong> — Shows that practical kernel verification is achievable using Rust and the Verus verifier, bridging the gap between formal methods and production OS development.</p><hr><h3 id=ticktock-verified-isolation-in-a-production-embedded-os>TickTock: Verified Isolation in a Production Embedded OS<a hidden class=anchor aria-hidden=true href=#ticktock-verified-isolation-in-a-production-embedded-os>#</a></h3><p><em>Vivien Rindisbacher, Evan Johnson 0001, Nico Lehmann, Tyler Potyondy <em>et al.</em></em></p><p><strong>TL;DR</strong> — Delivers machine-checked proofs of isolation properties for a real embedded OS, providing strong security guarantees without sacrificing production deployability.</p><hr><h3 id=μfork-supporting-posix-fork-within-a-single-address-space-os>μFork: Supporting POSIX fork Within a Single-Address-Space OS<a hidden class=anchor aria-hidden=true href=#μfork-supporting-posix-fork-within-a-single-address-space-os>#</a></h3><p><em>John Alistair Kressel, Hugo Lefeuvre, Pierre Olivier</em></p><p><strong>TL;DR</strong> — Reconciles the POSIX fork abstraction with unikernel/single-address-space designs, addressing a long-standing compatibility obstacle for library OS deployments.</p><hr><h3 id=scalable-address-spaces-using-concurrent-interval-skiplist>Scalable Address Spaces using Concurrent Interval Skiplist<a hidden class=anchor aria-hidden=true href=#scalable-address-spaces-using-concurrent-interval-skiplist>#</a></h3><p><em>Tae Woo Kim, Youngjin Kwon, Jeehoon Kang</em></p><p><strong>TL;DR</strong> — Tackles the fundamental kernel scalability problem of virtual memory area management by replacing the VMA red-black tree with a concurrent interval skiplist, yielding significant mmap/munmap throughput gains.</p><hr><h3 id=cache_ext-customizing-the-page-cache-with-ebpf>cache_ext: Customizing the Page Cache with eBPF<a hidden class=anchor aria-hidden=true href=#cache_ext-customizing-the-page-cache-with-ebpf>#</a></h3><p><em>Tal Zussman, Ioannis Zarkadas, Jeremy Carin, Andrew Cheng <em>et al.</em></em></p><p><strong>TL;DR</strong> — Extends the eBPF programmability model to the OS page cache, enabling application-specific caching policies without kernel modifications.</p><hr><h3 id=aeolia-a-fast-and-secure-userspace-interrupt-based-storage-stack>Aeolia: A Fast and Secure Userspace Interrupt-Based Storage Stack<a hidden class=anchor aria-hidden=true href=#aeolia-a-fast-and-secure-userspace-interrupt-based-storage-stack>#</a></h3><p><em>Chuandong Li 0004, Ran Yi 0004, Zonghao Zhang, Jing Liu 0074 <em>et al.</em></em></p><p><strong>TL;DR</strong> — Redesigns the storage I/O path around userspace interrupts, achieving high throughput and low latency while preserving strong isolation properties.</p><hr><h3 id=sleeping-with-one-eye-open-fast-sustainable-storage-with-sandman>Sleeping with One Eye Open: Fast, Sustainable Storage with Sandman<a hidden class=anchor aria-hidden=true href=#sleeping-with-one-eye-open-fast-sustainable-storage-with-sandman>#</a></h3><p><em>Yanbo Zhou, Erci Xu, Anisa Su, Jim Harris <em>et al.</em></em></p><p><strong>TL;DR</strong> — Introduces a storage system that aggressively power-gates flash devices while maintaining low latency, addressing sustainability concerns for large-scale storage deployments.</p><hr><h3 id=oasis-pooling-pcie-devices-over-cxl-to-boost-utilization>Oasis: Pooling PCIe Devices Over CXL to Boost Utilization<a hidden class=anchor aria-hidden=true href=#oasis-pooling-pcie-devices-over-cxl-to-boost-utilization>#</a></h3><p><em>Yuhong Zhong, Daniel S. Berger, Pantea Zardoshti, Enrique Saurez <em>et al.</em></em></p><p><strong>TL;DR</strong> — Exploits CXL interconnects to pool PCIe devices across servers, significantly improving device utilisation and laying groundwork for memory-semantic datacenter architectures.</p><hr><h3 id=scalable-far-memory-balancing-faults-and-evictions>Scalable Far Memory: Balancing Faults and Evictions<a hidden class=anchor aria-hidden=true href=#scalable-far-memory-balancing-faults-and-evictions>#</a></h3><p><em>Yueyang Pan, Yash Lala, Musa Unal, Yujie Ren <em>et al.</em></em></p><p><strong>TL;DR</strong> — Provides a rigorous analysis of the fault-vs-eviction trade-off in far-memory systems and proposes mechanisms that scale to production datacenter workloads.</p><hr><h3 id=tiga-accelerating-geo-distributed-transactions-with-synchronized-clocks>Tiga: Accelerating Geo-Distributed Transactions with Synchronized Clocks<a hidden class=anchor aria-hidden=true href=#tiga-accelerating-geo-distributed-transactions-with-synchronized-clocks>#</a></h3><p><em>Jinkun Geng, Shuai Mu 0001, Anirudh Sivaraman, Balaji Prabhakar</em></p><p><strong>TL;DR</strong> — Exploits hardware clock synchronisation to cut coordination overhead in geo-distributed transactions, achieving latency close to the theoretical network minimum.</p><hr><h3 id=pesto-cooking-up-high-performance-bft-queries>Pesto: Cooking up High Performance BFT Queries<a hidden class=anchor aria-hidden=true href=#pesto-cooking-up-high-performance-bft-queries>#</a></h3><p><em>Florian Suri-Payer, Neil Giridharan, Liam Arzola, Shir Cohen <em>et al.</em></em></p><p><strong>TL;DR</strong> — Advances Byzantine fault-tolerant systems by separating the query path from consensus, enabling high-throughput reads without weakening safety guarantees.</p><hr><h3 id=orthrus-efficient-and-timely-detection-of-silent-user-data-corruption-in-the-cloud-with-resource-adaptive-computation-validation>Orthrus: Efficient and Timely Detection of Silent User Data Corruption in the Cloud with Resource-Adaptive Computation Validation<a hidden class=anchor aria-hidden=true href=#orthrus-efficient-and-timely-detection-of-silent-user-data-corruption-in-the-cloud-with-resource-adaptive-computation-validation>#</a></h3><p><em>Chenxiao Liu, Zhenting Zhu, Quanxi Li, Yanwen Xia <em>et al.</em></em></p><p><strong>TL;DR</strong> — Detects silent data corruption at cloud scale using resource-adaptive redundant computation, addressing a critical and hard-to-diagnose reliability threat in hyperscale infrastructure.</p></div><footer class=post-footer><ul class=post-tags></ul><nav class=paginav><a class=prev href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/socc-2025/><span class=title>« Prev</span>
<span>SoCC 2025 Digest</span>
</a><a class=next href=https://pub.sqrt.fr/vincent/publish-assistant/cloud-edge/digests/tc-2025/><span class=title>Next »</span>
<span>TC 2025 Digest</span></a></nav></footer></article></main><footer class=footer><span>&copy; 2026 <a href=https://pub.sqrt.fr/vincent/publish-assistant/>Publish Assistant</a></span> ·
<span>Powered by
<a href="https://gohugo.io/?utm_source=papermod" rel=noopener target=_blank>Hugo</a> &
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel=noopener target=_blank>PaperMod</a></span></footer><a href=#top id=top-link class="top-link hidden" aria-label="go to top" title="Go to Top (Alt + G)" accesskey=g><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-up"><polyline points="17 11 12 6 7 11"/><polyline points="17 18 12 13 7 18"/></svg>
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var toplink=document.getElementById("top-link");window.onscroll=function(){const e=window.innerHeight;document.body.scrollTop>e||document.documentElement.scrollTop>e?toplink.classList.remove("hidden"):toplink.classList.add("hidden")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>