Introductie van ReactOS 0.4.16

We zijn verheugd de release van ReactOS 0.4.16 aan te kondigen!

Na anderhalf jaar ontwikkeling presenteren we met trots de verbeteringen die we hebben doorgevoerd: een nieuwe grafische installer, een gecombineerd boot-cd en live-cd image, verbeteringen aan de video-, audio-, netwerk- en opslagstack, een nieuw installatietype en synchronisaties van code van derden.

Grafische installer en de All-in-One Boot CD

Voorheen bood ReactOS twee verschillende images aan voor download: een live-cd waarmee je ReactOS kon testen in een lees-alleen omgeving, en een boot-cd waarmee je ReactOS via een tekstgebaseerde installer op je harde schijf kon installeren.

Dankzij de inspanningen van Hermès Bélusca-Maïto (hbelusca) beschikt ReactOS 0.4.16 over een nieuwe grafische installer en een gecombineerde boot-cd en live-cd. Je kunt ReactOS nu met hetzelfde image zowel testen als installeren.

De grafische installer bevat functies voor:

  • Installeren of bijwerken van ReactOS
  • Basisbeheer van partities
  • Kopiëren van bestanden
  • Voltooiing van de grafische installatie

Meer informatie over het werk van Hermès is te vinden in zijn blogposts:

  • Deel 1 (september 2023): Gedeeltelijke Wine-syncing van setupapi
  • Deel 2 (oktober-november 2023): Het werkend krijgen van de partitionerings-UI
  • Deel 3 (december 2023): Eerste tests

Video

Tijdens de ontwikkeling van versie 0.4.15 legde core-ontwikkelaar Hervé Poussineau (hpoussin) de basis voor ondersteuning van meerdere monitoren en een fallback naar een VGA-driver wanneer displaydrivers niet laden. Deze basis stelde ons in staat om in versie 0.4.16 verder te werken aan een betere compatibiliteit van videodrivers.

Jarenlang kampte ReactOS met diverse problemen bij alle grote leveranciers van videodrivers. Vooral Nvidia-GPU's hadden last van een vertragingsprobleem dat door veel getalenteerde contributeurs en ontwikkelaars is onderzocht. Uiteindelijk ontdekte Justin Miller (TheDarkFire) dat de kernel tekortkwam aan systeem-paginatabelvermeldingen (PTE's) bij het laden van drivers van derden. Deze beperking was het meest zichtbaar bij grafische drivers, omdat deze meer geheugen alloceren dan de meeste andere drivers. Justin heeft de geheugenindeling van onze memory manager gewijzigd om het aantal systeem-PTE's te verhogen, waarmee de lastig te debuggen vertragingsbug bij Nvidia-videodrivers is opgelost.

Bij AMD-videodrivers bleef het OpenGL-venster leeg. Dit is opgelost door het herschrijven van ExtEscape, geïnspireerd door een patch van de overleden core-ontwikkelaar James Tabor (jimtabor).

Deze verbeteringen hebben gezorgd voor meer stabiliteit, een beter resourcebeheer van nieuwe apparaten en het oplossen van diverse edge-case bugs in onze win32k.sys driver. We danken onze contributeurs en ontwikkelaars voor hun tijd, aangezien deze fixes een enorme hoeveelheid onderzoek vereisten.

Audio

Vóór versie 0.4.16 had ReactOS onvolledige ondersteuning voor High Definition (HD) audio. HD-audiodrivers zijn afhankelijk van een busdriver (hdaudbus.sys), inclusief drivers van AMD, IDT, Nvidia, Realtek en SigmaTel.

Onze oorspronkelijke implementatie, lang geleden geschreven door Johannes Anderwald (janderwald), was nooit voltooid en was een frequente bron van bugchecks bij het installeren van HD-audio-controllerdrivers. Core-ontwikkelaar Oleg Dubinskiy (oleg-dubinskiy) heeft sklhdaudbus, een nieuwe HD-audio busdriver, geïmporteerd om onze oude implementatie te vervangen. HD-audiocontrollers die compatibel zijn met Windows XP en Windows Server 2003 zouden nu moeten werken in ReactOS 0.4.16.

De nieuwe HD-audio busdriver is afhankelijk van het Kernel Mode Driver Framework (KMDF). Microsoft heeft KMDF open source gemaakt als onderdeel van de Windows-Driver-Frameworks repository. Justin heeft KMDF geïmporteerd voor de nieuwe HD-audio busdriver, waardoor we KMDF nu kunnen gebruiken om andere drivers te importeren of te ontwikkelen.

Daarnaast heeft Oleg het volgende verbeterd:

  • De volume- en balansregelaars in Geluidsinstellingen (mmsys.cpl) en de Audio Volume Mixer (sndvol32.exe) zijn hersteld. Volume- en balansniveaus worden nu opgeslagen en hersteld na een herstart bij gebruik van een HD-audiocodec.
  • De code voor audio-apparaatenumeratie is bijgewerkt om meer geluidskaarten te ondersteunen.
  • De binaire compatibiliteit met de Windows-audiostack is verbeterd dankzij fixes in onze Plug and Play (PnP) stack en SetupAPI.

Opslag

Sinds 2009 gebruikt ReactOS de UniATA-opslagdriver voor SATA, AHCI en ondersteuning voor partities groter dan 8GB. Hoewel dit destijds een grote hulp was, is UniATA tegenwoordig verantwoordelijk voor trage opstarttijden en het niet laden op veel apparaten, wat leidt tot de gevreesde INACCESSIBLEBOOTDEVICE (0x7B) bugcheck.

ReactOS 0.4.16 introduceert een nieuwe ATA-driver, ontwikkeld door contributeur Dmitry Borisov (disean). Deze nieuwe driver stelt ReactOS in staat om in veel meer omgevingen op te starten, waaronder binnen Hyper-V Generation 1.

Verder zijn de volgende verbeteringen doorgevoerd:

  • In 2021 hebben we de open-source Microsoft FastFAT-driver geïmporteerd en geactiveerd. Dit beïnvloedde echter de mogelijkheid om FAT-partities te herstellen via chkdsk. Core-ontwikkelaar Doug Lyons (Doug-Lyons) heeft de FAT chkdsk-routines hersteld zodat deze werken met de FastFAT-driver.
  • Core-ontwikkelaar Mark Jansen (learn-more) heeft een schijfopruimingshulpprogramma toegevoegd. Dit hulpprogramma is compatibel met extensies van de Windows-schijfopruiming, waardoor zowel het besturingssysteem als programma's van derden het schijfgebruik kunnen opschonen.

Netwerken

Tijdens de ontwikkeling van ReactOS 0.4.15 introduceerde Dmitry een nieuwe DC21X4 netwerkadapterdriver voor betere hardwarecompatibiliteit. Deze driver wordt gebruikt op apparaten met DECchip 21x4-gebaseerde netwerkadapters en in gevirtualiseerde omgevingen zoals Microsoft Virtual PC 2007 en Hyper-V Generation 1. Hierdoor kan ReactOS 0.4.16 op beide systemen opstarten en toegang krijgen tot het internet.

ReactOS 0.4.16 voegt daarnaast ondersteuning voor asynchrone verbindingen toe. Dit verbetert de netwerkprestaties doordat applicaties netwerkoperaties kunnen uitvoeren zonder dat het systeem vastloopt. Ook verbetert dit de applicatiecompatibiliteit, aangezien veel programma's ervan uitgaan dat deze asynchrone connection API's altijd aanwezig zijn.

ReactOS Server Core

ReactOS ondersteunt installatietypes voor zowel Workstation als Server. Bij een Workstation-installatie zijn standaard meer grafische opties ingeschakeld dan bij een Server-installatie. Daarnaast bevinden gebruikersmappen bij Workstation-installaties zich momenteel in de map "My Documents", hoewel Windows Vista en nieuwere versies deze mappen voor zowel Server als Workstation buiten de "Documents"-map hebben geplaatst.

Om ReactOS breder inzetbaar te maken in server- en embedded-omgevingen, heeft core-ontwikkelaar Carl Bialorucki (cbialorucki) het installatietype Server Core toegevoegd. Dit installatietype schakelt de grafische explorer shell uit, maar laadt verder het volledige Win32-subsysteem. ReactOS Server Core werkt op een vergelijkbare manier als Windows Server Core, dat werd geïntroduceerd met Windows Server 2008.

Synchronisatie van code van derden

ReactOS maakt gebruik van verschillende andere open-source projecten in de codebase. Een van de grootste projecten is Wine, een re-implementatie van diverse Windows API's voor Unix-achtige besturingssystemen. ReactOS gebruikt een fork van Wine die direct koppelt met een Windows-achtige kernel in plaats van calls te vertalen naar een Unix-achtige kernel.

Jarenlang was ReactOS beperkt tot Wine 2.x en 3.x vanwege compatibiliteitsoverwegingen bij het adopteren van API's die nieuwer waren dan die van Windows Server 2003. Aan het einde van de ontwikkelingscyclus van 0.4.15 hebben we deze strikte naleving van Windows Server 2003 compatibiliteit losgelaten, waardoor we onze Wine-fork langzaam konden bijwerken naar Wine 10.0. Deze upgrade is nog gaande, maar 0.4.16 bevat al een aanzienlijk deel van dit werk. We verwachten dat het bijwerken naar Wine 11.0 of latere versies aanzienlijk gemakkelijker zal zijn dankzij deze inspanning.

Op dit moment wordt het ReactOS release-image nog steeds gecompileerd met uitsluitend Windows Server 2003 exports, omdat er verschillende programma's zijn die verwachten dat alle exports van Windows Vista en nieuwer beschikbaar zijn, zelfs als er slechts enkele worden blootgesteld. Voor wie wil experimenteren met ondersteuning voor applicaties van Windows Vista en nieuwer, kan ReactOS worden gebouwd met de -DDLLEXPORTVERSION flag.

Voor het eerst bevatten de ReactOS release-images ook WineVDM, wat de compatibiliteit met 16-bit Windows-applicaties vergroot. WineVDM is een project van otya128.

Slotwoord

De missie van ReactOS is: "Run your favorite Windows applications and drivers in an open-source environment you can trust." Met elke release komen we dichter bij het realiseren van dit doel.

We kijken ernaar uit om meer ontwikkelingen en vooruitgang met jullie te delen. Onze diepste dank gaat uit naar onze community, contributeurs en donateurs. Zonder onze contributeurs zouden we geen vooruitgang kunnen boeken in de ontwikkeling. Zonder onze donateurs zouden we onze test- en hostinginfrastructuur of ontwikkelingscontracten niet kunnen financieren. En zonder onze community zou niemand weten dat we bestaan.

Bedankt dat jullie ReactOS mogelijk maken!

Met vriendelijke groet,

Het ReactOS Team

---

Statistieken

  • Opgeloste Jira-issues: 381
  • Commits: 2808
  • Oudste opgeloste Jira-issue: CORE-3804 van 3 februari 2009

De releases/0.4.16 branch is op 28 april 2026 geforkt van master na commit bac97c5.