Kontrybucje open source: 125 przyjętych zmian w 65 projektach
Poprawki, które opiekunowie cudzych projektów przejrzeli i włączyli do swojego kodu. Od Proxmox VE i edytora Zed po biblioteki PHP, Go i .NET.
- Go33 zmianyVersity Gateway (9), Ebitengine (3) i 19 kolejnych
- JavaScript25 zmiancompromise (21), Autoprefixer (3), spacetime (1)
- Python6 zmianpydantic-extra-types (2), funcy (1) i 3 kolejne
- Perl i JavaScript6 zmianProxmox VE (6)
- TypeScript2 zmianyvscode-neovim (1), MailDev (1)
65 projektów, każdy z naszą przyjętą zmianą
Kolor koła to język repozytorium, a koła jednego języka trzymają się razem. Lista największych zaczyna się od Proxmox VE i ILSpy, dalej idą pozostałe według gwiazdek pomnożonych przez liczbę naszych zmian.
Wielkość koła: gwiazdki repozytorium. Liczba w kole: nasze przyjęte zmiany. Puste koło: projekt poza GitHubem.
Wszystkie projekty według języka
Grupy od języka z największą liczbą projektów, w grupie od projektu z największą liczbą naszych zmian. Nazwa prowadzi do strony projektu.
Go
21- Versity Gatewayversity/versitygw93007
Najnowsza: fix: compute IsTruncated from the absolute index in ListMultipartUploads (8.10.2026)
- Ebitenginehajimehoshi/ebiten313 546
Najnowsza: audio: run the tests waiting on real time on synctest's fake clock (6.10.2026)
- goqueryPuerkitoBio/goquery214 989
Najnowsza: Expose html parse options (addresses #139, noscript) (30.09.2026)
- urfave/cliurfave/cli124 287
Najnowsza: fix: use prefixFor for BoolWithInverseFlag names and aliases (8.10.2026)
PHP
20- Kanboardkanboard/kanboard49904
Najnowsza: fix(ical): only accept known columns as the calendar start date (11.10.2026)
- Spiral Testingspiral/testing37
Najnowsza: Ignore line endings in scaffolder output assertions (4.10.2026)
- Whoopsfilp/whoops213 230
Najnowsza: Stop output buffer cleanup at buffers that cannot be removed (3.10.2026)
- Predispredis/predis27778
Najnowsza: Fix ConnectionErrorProof response count on single node read errors (8.10.2026)
C#
7- ILSpyicsharpcode/ILSpy326 543
Najnowsza: Fix #4137: Keep nint in conditionals with mixed native int branches (11.10.2026)
- NLogNLog/NLog26547
Najnowsza: CachedLayoutRendererWrapper - Added CachedUntil to reset cached value when hour or day changes (11.10.2026)
- Markdigxoofx/markdig25341
Najnowsza: Fix: keep trailing content out of an unmatched emphasis closer (#743) (19.09.2026)
- PollyApp-vNext/Polly114 242
Najnowsza: Return null from FaultGenerator when no fault is generated (6.09.2026)
Rust
6- Sonicvaleriansaliou/sonic521 357
Najnowsza: fix(core): Back up and restore FST buckets again (5.10.2026)
- Zedzed-industries/zed191 587
Najnowsza: openai_subscribed: Keep loading slow model catalogs in the background (1.10.2026)
- PagefindPagefind/pagefind15511
Najnowsza: fix(pagefind): skip exclude selectors that cannot be parsed (13.09.2026)
- instamitsuhiko/insta12974
Najnowsza: Remove trailing semicolon from assert_binary_snapshot! macro body (10.10.2026)
- rssrust-syndication/rss1504
Najnowsza: Fix image height validation to allow the spec maximum of 400 (5.09.2026)
Python
5- funcySuor/funcy13510
Najnowsza: fix: _cut_iter yields wrong-length/wrong-content parts when step > n (10.09.2026)
- python-benedictfabiocaccamo/python-benedict11606
Najnowsza: Fix RecursionError when assigning a benedict into its own nested descendant (#592) (29.09.2026)
- pydashdgilland/pydash11447
Najnowsza: Fix `fill` growing the array when `start` comes after `end` (20.09.2026)
- pytimeparsewroberts/pytimeparse1299
Najnowsza: Fix sign character class accidentally matching a pipe `|` (3.10.2026)
JavaScript
3- compromisespencermountain/compromise2112 161
Najnowsza: find payloads by term id so they survive a .remove() (6.10.2026)
- Autoprefixerpostcss/autoprefixer322 209
Najnowsza: Add `/* autoprefixer: ignore next warning */` control comment (7.10.2026)
- spacetimespencermountain/spacetime14107
Najnowsza: Fix hour() setter clamping to an invalid hour (24) (8.09.2026)
TypeScript
2- vscode-neovimvscode-neovim/vscode-neovim17753
Najnowsza: Keep visual selections whole over characters outside the BMP (23.09.2026)
- MailDevmaildev/maildev16135
Najnowsza: Build CID attachment URLs against the API route and base path (22.09.2026)
Perl i JavaScript
1- Proxmox VEpve-manager, proxmox-widget-toolkit6poza GitHubem
Najnowsza: fix #8015: ui: upload: let the user choose the .img image format (29.09.2026)
Przyjęte zmiany z ostatnich 37 dni
125 przyjętych zmian w 65 projektach. Kolumna to wszystkie zmiany jednego dnia, kolor to język repozytorium.
- Go
- PHP
- JavaScript
- C#
- Rust
- Perl i JavaScript
- Python
- TypeScript
Najnowsze przyjęte zmiany
Ostatnie zmiany, które opiekunowie projektów włączyli do swojego kodu, z tytułem w brzmieniu z repozytorium i adresem, pod którym każdy może je sprawdzić.
- ILSpy#4232Przyjęta 11.10.2026github.com/icsharpcode/ILSpy/pull/4232
- chezmoi#5233
fix: Don't double backslashes in shellQuote
Przyjęta 11.10.2026github.com/twpayne/chezmoi/pull/5233 - chezmoi#5232
fix: Pass /dev/null to diff command for missing files in apply --interactive
Przyjęta 11.10.2026github.com/twpayne/chezmoi/pull/5232 - OpenRA#22627
Preserve player definition order in MapPlayers
Przyjęta 11.10.2026github.com/OpenRA/OpenRA/pull/22627 - Kanboard#5914
fix(ical): only accept known columns as the calendar start date
Przyjęta 11.10.2026github.com/kanboard/kanboard/pull/5914 - Kanboard#5913
fix(security): escape the project name in the analytic modal title
Przyjęta 11.10.2026github.com/kanboard/kanboard/pull/5913
Proxmox VE: poprawki przez listę mailingową
Proxmox nie przyjmuje pull requestów. Łatki wysyła się mailem na pve-devel, po podpisaniu umowy licencyjnej, a opiekun nakłada je na repozytorium sam. Każda nasza łatka odpowiada na zgłoszenie z Bugzilli i nosi jego numer.
- #6475Wgrywanie pliku pokazuje samą jego nazwę
- #7108ipset nie podsuwa dodanych już aliasów
- #8015Wybór formatu .img przy wgrywaniu
- #8015Wybór formatu .img przy pobieraniu z adresu
- #5608Nazwa mapowania zasobów sprawdzana jak w API
- #6943Wybór sieci pokazuje komentarze wpisów IPv6
Zgłoszenie w Bugzilli
Błąd z numerem, opisany przez użytkowników. Nasze łatki odpowiadają na te zgłoszenia:
- #64751 łatka
- #71081 łatka
- #80152 łatki
- #56081 łatka
- #69431 łatka
Łatka przez git send-email
Na listę pve-devel, z opisem w treści maila. Od nas: 6 łatek.
Przegląd na liście
Recenzja i test od opiekunów projektu, na tej samej liście.
Nałożenie w repozytorium
Commit z naszym autorstwem na git.proxmox.com:
ILSpy: poprawki w dekompilatorze .NET
Dekompilator .NET: zamienia skompilowane biblioteki z powrotem w czytelny kod C#. Repozytorium ma 26 543 gwiazdki na GitHubie, a opiekunowie przyjęli od nas 3 zmiany.
Co nie działało
Kompilator C# zapisuje delegat utworzony z grupy metod w statycznym polu pamięci podręcznej, żeby nie tworzyć go od nowa przy każdym wywołaniu. ILSpy, otwarty dekompilator dla .NET, rozpoznaje ten wzorzec i zamienia go z powrotem na czytelny zapis. Transformacja zakładała jednak, że pole z pamięci zostanie odczytane dokładnie raz. Przy kodzie
_ = (Action<int>)M;delegat jest tworzony i od razu odrzucany, więc pole nie jest odczytywane ani razu. Wzorzec nie pasował, a w wyniku dekompilacji zostawało pole o nazwie<>O.<0>__M, której nie da się użyć w C#. Taki kod się nie kompiluje (zgłoszenie #3965).Co zmieniliśmy
Gdy pole pamięci nie ma żadnego odczytu, sprawdzenie pamięci zostaje zastąpione utworzeniem delegata, które zabezpieczało. W wyniku pojawia się
new Action<int>(M);, czyli kod, który się kompiluje i robi to samo.Jak to sprawdziliśmy
Doszedł zestaw przypadków testowych
Issue3965z dziewięcioma scenariuszami: pojedyncza odrzucona konwersja, konwersja przed użyciem i po użyciu tej samej metody, kilka konwersji pod rząd, dwie do tej samej metody, konwersja w warunku i w pętli. Każdy ma zapisany oczekiwany wynik, z którym test porównuje dekompilację.Czego nas to nauczyło
Dekompilator musi rozpoznać wzorce, które generuje kompilator, inaczej zostawia w kodzie śmieci po optymalizacjach. Każda poprawka wymagała przeczytania, co dokładnie emituje kompilator C# i VB.
Projekty według tego, czym się zajmują
Daty, logi, poczta i konfiguracja wracają w każdym języku, więc te same rodzaje bibliotek poprawialiśmy w kilku z nich. Wiersz to obszar, kolumna to język repozytorium, kwadrat to jedna przyjęta zmiana.
Narzędzia programisty
16 projektów, 6 języków
Edytory, dekompilator, testy, dokumentacja API, pakiety, CSS, wiersz poleceń i silniki gier.
Dane i konfiguracja
13 projektów, 5 języków
CSV, konfiguracja i pliki dotfiles, jq, adresy URI, serializacja API i walidacja danych.
Daty i czas
7 projektów, 4 języki
Daty, strefy czasowe i czas zapisany słowami.
Markdown, HTML i tekst
7 projektów, 5 języków
Parsery Markdown i HTML, RSS, lekser i język naturalny.
Logi i błędy
5 projektów, 2 języki
Zapis logów, strona błędu i ponawianie po awarii.
Wyszukiwanie i magazyny
5 projektów, 3 języki
Silniki wyszukiwania, magazyn zgodny z S3, indeks bitmapowy i klient Redis.
Aplikacje na własny serwer
5 projektów, 4 języki
Wirtualizacja, panel serwerów gier, rozliczenia hostingu, kanban i CI/CD.
Funkcje pomocnicze
4 projekty, 2 języki
Zbiory funkcji pomocniczych i statystyka.
Pytania o kontrybucje
Skąd są te zmiany, jak wybieramy projekty, na jakiej licencji jest nasz kod i czy poprawimy coś w Twojej bibliotece.
Czytaj dalej
Dlaczego to robimy, nasze własne projekty, opisy zmian, języki, w których piszemy, i cały dział Realizacje.
Potrzebujesz zespołu, który poprawi błąd u źródła?
Opisz problem z biblioteką albo projektem. Odpiszemy w godzinę.