{"id":121950,"date":"2025-02-15T14:22:29","date_gmt":"2025-02-15T12:22:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/go-1-24"},"modified":"2025-02-15T14:22:29","modified_gmt":"2025-02-15T12:22:29","slug":"go-1-24","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/go-1-24","title":{"rendered":"Go 1.24","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><a rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/images\/21754\/original.png\" itemprop=\"contentURL\">            <img decoding=\"async\" alt=\"Go 1.24\" src=\"\/wp-content\/uploads\/2025\/02\/6d6299421d83951d055782658814425f.jpg\" style=\"display:block;margin: 0 auto;\" \/>                   <\/a>                       <noindex>      <noindex><\/p>\n<p>Die neue Version der Programmiersprache Go, Version 1.24, erscheint sechs Monate nach <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. Die meisten \u00c4nderungen betreffen die Implementierung von Toolchain, Runtime und Bibliotheken. Wie immer bietet das Release <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">das Versprechen der Kompatibilit\u00e4t.<\/a> Go 1. Die Entwickler der Sprache gehen davon aus, dass fast alle Go-Programme weiterhin wie gewohnt kompiliert und ausgef\u00fchrt werden k\u00f6nnen.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>\u00c4nderungen in der Sprache<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 unterst\u00fctzt jetzt vollst\u00e4ndig <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generische Typalias.<\/a>: Ein Typalias kann als parametrisierter Typ deklariert werden. Details finden Sie in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">der Sprachspezifikation.<\/a>. Derzeit kann diese M\u00f6glichkeit durch Setzen von GOEXPERIMENT=noaliastypeparams deaktiviert werden; jedoch wird die Option aliastypeparams in Go 1.25 entfernt.<\/p>\n<p><\/noindex> <\/p>\n<h2>Werkzeuge<\/h2>\n<h3>Go-Befehle<\/h3>\n<p> <noindex><\/p>\n<p>Go-Module k\u00f6nnen jetzt ausf\u00fchrbare Abh\u00e4ngigkeiten mit der Direktive tool in go.mod verfolgen. Dies beseitigt die Notwendigkeit eines vorherigen Workarounds, um Werkzeuge als leere Importe in eine Datei hinzuzuf\u00fcgen, die normalerweise \u201ctools.go\u201d genannt wird. Der Go-Befehl kann nun diese Werkzeuge zus\u00e4tzlich zu den mit Go gelieferten Werkzeugen ausf\u00fchren. Weitere Informationen finden Sie in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">Dokumentation.<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Das neue Flag -tool f\u00fcr go get f\u00fcgt die Tool-Direktive zum aktuellen Modul f\u00fcr die angegebenen Pakete hinzu, zus\u00e4tzlich zur Einf\u00fchrung von Anforderungen.<\/p>\n<p> <noindex><\/p>\n<p>Neu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">Meta-Muster Tool<\/a> bezieht sich auf alle Tools im aktuellen Modul. Dies kann verwendet werden, um sie alle \u00fcber 'go get tool' zu aktualisieren oder um sie in das GOBIN-Verzeichnis \u00fcber 'go install tool' zu installieren.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ausf\u00fchrbare Dateien, die \u00fcber 'go run' erstellt werden, und das neue Verhalten von 'go tool' werden jetzt im Go-Build-Cache gespeichert. Dies erm\u00f6glicht wiederholte Ausf\u00fchrungen mit einem vergr\u00f6\u00dferten Cache. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Die Befehle 'go build' und 'go install' akzeptieren jetzt die Flagge -json, die die Ausgaben und Fehler des Builds als strukturierten JSON-Output im Standardausgang meldet. Einzelheiten zum Format finden Sie in 'go help buildjson'.<\/p>\n<p> <noindex><\/p>\n<p>Dar\u00fcber hinaus meldet 'go test -json' jetzt die Ausgaben und Fehler des Builds in JSON, gemischt mit dem JSON der Testergebnisse. Diese k\u00f6nnen anhand neuer Action-Typen unterschieden werden, aber wenn sie Probleme im Testintegrationssystem verursachen, kann auf den textuellen Build-Ausgang \u00fcber <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">die Einstellung GODEBUG<\/a> gotestjsonbuildtext=1 zur\u00fcckgegriffen werden.<\/p>\n<p><\/noindex> <\/p>\n<p>Die neue Umgebungsvariable GOAUTH bietet eine flexible M\u00f6glichkeit zur Autorisierung privater Modul-Downloads. Weitere Informationen finden Sie in go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Der Befehl go build wird jetzt eingerichtet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">die Hauptmodulversion<\/a> im kompilierten Bin\u00e4rformat, basierend auf dem Tag und\/oder dem Commit des Versionskontrollsystems. Der Suffix +dirty wird hinzugef\u00fcgt, wenn nicht festgeschriebene \u00c4nderungen vorhanden sind. Mit dem Flag -buildvcs=false kann die Versionskontrollinformation aus dem Bin\u00e4rformat ausgeschlossen werden.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Die Einstellung GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> kann jetzt verwendet werden, um den Prozess der Auswahl des Toolchains im Befehl go zu verfolgen.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo unterst\u00fctzt neue Annotationen f\u00fcr C-Funktionen zur Verbesserung der Laufzeitleistung. #cgo noescape cFunctionName sagt dem Compiler, dass der an die C-Funktion cFunctionName \u00fcbergebene Speicher nicht verloren geht. #cgo nocallback cFunctionName informiert den Compiler, dass die C-Funktion cFunctionName keine Go-Funktionen r\u00fcckruft. Weitere Informationen finden Sie in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">der Cgo-Dokumentation<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo verweigert derzeit, Aufrufe von einer Funktion zu kompilieren, die mehrere inkompatible Deklarationen hat. Wenn beispielsweise f sowohl als void f(int) als auch als void f(double) deklariert ist, wird cgo einen Fehler melden, anstatt m\u00f6glicherweise eine falsche Aufrufsequenz f\u00fcr f(0) zu generieren. Neu in dieser Version ist die verbesserte Erkennung dieses Fehlers, wenn inkompatible Deklarationen in verschiedenen Dateien auftreten. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>Das Tool objdump unterst\u00fctzt jetzt das Disassemblieren auf 64-Bit LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) und S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Der neue Tests-Analyzer berichtet \u00fcber h\u00e4ufige Fehler in den Testdeklarationen, Fuzzern, Benchmarks und Beispielen in Testpaketen, wie unsachgem\u00e4\u00df formatierte Namen, falsche Signaturen oder Beispiele, die nicht existierende Identifikatoren dokumentieren. Einige dieser Fehler k\u00f6nnen dazu f\u00fchren, dass Tests nicht ausgef\u00fchrt werden.<\/p>\n<p> <noindex><\/p>\n<p>Der bestehende printf-Analyzer berichtet nun \u00fcber Diagnosen bei Aufrufen der Form fmt.Printf(s), wobei s eine nicht konstante Formatzeichenfolge ist, ohne zus\u00e4tzliche Argumente. Solche Aufrufe sind fast immer ein Fehler, da der Wert von s das Zeichen % enthalten kann; verwenden Sie stattdessen fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>Diese \u00dcberpr\u00fcfung tendiert dazu, Funde im bestehenden Code zu machen und wird daher nur angewendet, wenn die Sprachversion (wie in der Direktive go im go.mod-Datei oder in den Kommentaren `\/\/go:build` angegeben) mindestens Go 1.24 betr\u00e4gt, um Unterbrechungen der kontinuierlichen Integration beim Upgrade auf das Go-Toolchain 1.24 zu vermeiden.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Der bestehende buildtag-Analyzer berichtet nun \u00fcber Diagnosen, wenn es ein falsches <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">Build-Grenze f\u00fcr \u00e4ltere Versionen<\/a> von Go in der Direktive \/\/go:build gibt. Zum Beispiel verweist \/\/go:build go1.23.1 auf einen Patch-Release; verwenden Sie stattdessen \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Der bestehende copylock-Analyzer berichtet nun \u00fcber Diagnosen, wenn eine Variable, die in einer dreifachen \"for\"-Schleife deklariert ist, wie for i := iter(); done(i); i = next(i) { \u2026 }, sync.Locker enth\u00e4lt, wie sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> Verhalten solcher Schleifen ge\u00e4ndert, um f\u00fcr jede Iteration eine neue Variable zu erstellen und Werte von der vorherigen Iteration zu kopieren; dieses Kopieren ist f\u00fcr Locks nicht sicher. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/66387\">#66387<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>GOCACHEPROG<\/h3>\n<p> <noindex><\/p>\n<p>Das interne Bin\u00e4rprogramm cmd\/go und der Test-Caching-Mechanismus k\u00f6nnen jetzt durch Kindprozesse implementiert werden, die das JSON-Protokoll zwischen dem Tool cmd\/go und dem als Umgebungsvariable GOCACHEPROG benannten Kindprozess implementieren. Zuvor war dies unter GOEXPERIMENT. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">Dokumentation.<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Laufzeit<\/h2>\n<p> <noindex><\/p>\n<p>Mehrere Leistungsverbesserungen in der Runtime haben die CPU-Overheads im Durchschnitt um 2-3 % in einer repr\u00e4sentativen Benchmark-Gruppe gesenkt. Die Ergebnisse k\u00f6nnen je nach Anwendung variieren. Zu diesen Verbesserungen geh\u00f6rt eine neue eingebaute Implementierung der map basierend auf <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">schwedischen Tabellen<\/a>, einer effizienteren Speicherzuweisung kleiner Objekte und einer neuen internen Runtime-Implementierung des Mutex.<\/p>\n<p><\/noindex> <\/p>\n<p>Die neue eingebaute Implementierung der map und der neue interne Runtime-Mutex k\u00f6nnen beim Build \u00fcber die Einstellungen GOEXPERIMENT=noswissmap und GOEXPERIMENT=nospinbitmutex deaktiviert werden.<\/p>\n<h2>Compiler<\/h2>\n<p>Der Compiler erlaubte bereits nicht die Definition neuer Methoden mit Empf\u00e4ngertypen, die von cgo generiert wurden, aber es war m\u00f6glich, diese Einschr\u00e4nkung \u00fcber den Typalias zu umgehen. Go 1.24 gibt jetzt immer einen Fehler aus, wenn der Empf\u00e4nger einen von cgo generierten Typ direkt oder indirekt (\u00fcber einen Typalias) angibt.<\/p>\n<h2>Linker<\/h2>\n<p>Der Linker generiert jetzt standardm\u00e4\u00dfig eine GNU-Build-ID (ELF NT_GNU_BUILD_ID) auf ELF-Plattformen und eine UUID (Mach-O LC_UUID) auf macOS. Die Build-ID oder UUID wird aus der Go-Build-ID abgeleitet. Dies kann mit dem Linker-Flag -B none deaktiviert oder mit dem Linker-Flag -B 0xNNNN und einem benutzerdefinierten hexadezimalen Wert \u00fcberschrieben werden.<\/p>\n<h2>Rollout<\/h2>\n<p> <noindex><\/p>\n<p>Wie in den <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">Release-Hinweisen zu Go 1.22<\/a>, erfordert Go 1.24 jetzt f\u00fcr den Rollout Go 1.22.6 oder h\u00f6her. Die Entwickler erwarten, dass Go 1.26 einen Patch-Release von Go 1.24 oder h\u00f6her f\u00fcr den Rollout verlangen wird.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standardbibliothek<\/h2>\n<h3>Eingeschr\u00e4nkter Zugriff auf das Dateisystem \u00fcber ein Verzeichnis<\/h3>\n<p> <noindex><\/p>\n<p>Neuer Typ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> erm\u00f6glicht das Ausf\u00fchren von Dateisystemoperationen innerhalb eines bestimmten Verzeichnisses.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Die Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> \u00f6ffnet ein Verzeichnis und gibt zur\u00fcck <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Methoden \u00fcber <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> Befehle in diesem Verzeichnis operieren und lassen keine Pfade auf Standorte au\u00dferhalb des Verzeichnisses verweisen, einschlie\u00dflich derjenigen, die symbolischen Links au\u00dferhalb des Verzeichnisses folgen. Die Methoden auf os.Root spiegeln die meisten Dateisystemoperationen wider, die im Paket os verf\u00fcgbar sind, einschlie\u00dflich beispielsweise <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Open\">os.Root.Open<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Create\">os.Root.Create<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Mkdir\">os.Root.Mkdir<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Neue Benchmark-Funktion<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarks k\u00f6nnen jetzt eine schnellere und fehleranf\u00e4lligere Methode nutzen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> um Iterationen des Benchmarks wie for b.Loop() { \u2026 } anstelle typischer Schleifenstrukturen mit b.N wie for range b.N durchzuf\u00fchren. Dies bietet zwei wesentliche Vorteile:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Die Benchmark-Funktion wird genau einmal f\u00fcr jeden -count ausgef\u00fchrt, sodass teure Einrichtungs- und Aufr\u00e4umschritte nur einmal durchgef\u00fchrt werden.<\/li>\n<li>Die Parameter der Funktionsaufrufe und deren Ergebnisse bleiben erhalten, wodurch der Compiler die Schleifenstruktur nicht vollst\u00e4ndig optimieren kann.<\/li>\n<\/ul>\n<h3>Verbesserte Finalisierer<\/h3>\n<p> <noindex><\/p>\n<p>Neue Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> ist ein Abschlussmechanismus, der flexibler, effizienter und weniger fehleranf\u00e4llig ist als <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup f\u00fcgt eine Bereinigungsfunktion an das Objekt an, die gestartet wird, sobald das Objekt nicht mehr verf\u00fcgbar ist. Im Gegensatz zu SetFinalizer k\u00f6nnen jedoch mehrere Bereinigungen an ein einzelnes Objekt angeh\u00e4ngt werden, Bereinigungen k\u00f6nnen an interne Zeiger angeh\u00e4ngt werden, und Bereinigungen f\u00fchren normalerweise nicht zu Speicherlecks, wenn Objekte einen Zyklus bilden. Au\u00dferdem verz\u00f6gern Bereinigungen nicht die Freigabe des Objekts oder der Objekte, auf die verwiesen wird. Neuer Code sollte AddCleanup gegen\u00fcber SetFinalizer bevorzugen.<\/p>\n<p><\/noindex> <\/p>\n<h3>Neues Paket weak<\/h3>\n<p> <noindex><\/p>\n<p>Neues Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> stellt schwache Zeiger bereit.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Schwache Zeiger sind ein niedrigstufiges Primitive, das bereitgestellt wird, um Strukturen zu erstellen, die den Speicher effizient nutzen, wie schwache W\u00f6rterb\u00fccher zur Zuordnung von Werten, Kanonisierung W\u00f6rterb\u00fccher f\u00fcr alles, was nicht durch das Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, und verschiedene Arten von Caches abgedeckt ist. Um diese Anwendungsf\u00e4lle zu unterst\u00fctzen, bietet diese Version auch <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Neues Paket crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Neues Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementiert ML-KEM-768 und ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM ist ein post-quantum Schl\u00fcsselverfahrensmechanismus, fr\u00fcher bekannt als Kyber und spezifiziert in <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Neue Pakete crypto\/hkdf, crypto\/pbkdf2 und crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Neues Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementiert die auf HMAC basierende Funktion zur Schl\u00fcsselerzeugung \"Extract-and-Expand\" HKDF, wie in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neues Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementiert die passwortbasierte Funktion zur Schl\u00fcsselerzeugung PBKDF2, wie in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neues Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementiert die Hash-Funktion SHA-3 sowie die SHAKE- und cSHAKE-Funktionen mit erweiterbarem Output, wie in <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Alle drei Pakete basieren auf bereits bestehenden Paketen golang.org\/x\/crypto\/\u2026<\/p>\n<h3>FIPS 140-3 Compliance<\/h3>\n<p> <noindex><\/p>\n<p>Diese Version enth\u00e4lt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">ein neues Set von Mechanismen zur Gew\u00e4hrleistung der FIPS 140-3 Compliance<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Das kryptographische Modul Go ist eine Sammlung interner Pakete der Standardbibliothek, die transparent zur Implementierung der genehmigten FIPS 140-3 Algorithmen verwendet werden. Anwendungen erfordern keine \u00c4nderungen, um das kryptographische Modul Go f\u00fcr genehmigte Algorithmen zu verwenden.<\/p>\n<p> <noindex><\/p>\n<p>Die neue Umgebungsvariable GOFIPS140 kann verwendet werden, um die Version des kryptographischen Moduls Go f\u00fcr den Build auszuw\u00e4hlen. Neu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Die Einstellung GODEBUG<\/a> fips140 kann verwendet werden, um den FIPS 140-3 Modus zur Laufzeit zu aktivieren.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 umfasst das kryptographische Modul Go Version v1.0.0, das derzeit mit einem akkreditierten CMVP-Labor getestet wird.<\/p>\n<h3>Neues experimentelles Paket testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Neues experimentelles Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> unterst\u00fctzt das Testen konkurrierenden Codes.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Die Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> startet eine Gruppe von Goroutinen in einer isolierten \u201eBlase\u201c. In der Blase operieren die Funktionen des Pakets <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> auf falschen Uhren.<\/li>\n<li>Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> wartet, bis alle Goroutinen im aktuellen Bereich blockiert sind.<\/li>\n<\/ul>\n<p>Details finden Sie in der Dokumentation des Pakets.<\/p>\n<p> <noindex><\/p>\n<p>Das Paket synctest ist experimentell und muss durch die Einstellung GOEXPERIMENT=synctest aktiviert werden. Die API des Pakets kann sich in zuk\u00fcnftigen Versionen \u00e4ndern. In <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> k\u00f6nnen Sie weitere Details sehen und Feedback geben.<\/p>\n<p><\/noindex> <\/p>\n<h3>Minore \u00c4nderungen in der Bibliothek<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementierungen (*Writer.AddFS) in archive\/zip und archive\/tar schreiben jetzt den Verzeichnisheader f\u00fcr ein leeres Verzeichnis.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Das Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> f\u00fcgt einige Funktionen hinzu, die mit Iteratoren arbeiten:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> gibt einen Iterator \u00fcber die durch neue Zeilen getrennten Zeilen in einem Byte-Slice zur\u00fcck.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> gibt einen Iterator \u00fcber alle Teil-Slices eines Byte-Slices zur\u00fcck, das durch einen Separator getrennt ist.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> gibt einen Iterator \u00fcber Teil-Slices eines Byte-Slices zur\u00fcck, das nach jeder Separator-Instanz geteilt ist.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> gibt einen Iterator \u00fcber die Byte-Slices zur\u00fcck, der um Sequenzen von Leerzeichen angeordnet ist, wie definiert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsFuncSeq\">FieldsFuncSeq<\/a> gibt einen Iterator \u00fcber die Byte-Slices zur\u00fcck, der um Sequenzen von Unicode-Codepunkten angeordnet ist, die dem Pr\u00e4dikat entsprechen.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Der zur\u00fcckgegebene Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> implementiert nicht l\u00e4nger die Methoden NewCTR, NewGCM, NewCBCEncrypter und NewCBCDecrypter. Diese Methoden waren undocumented und auf allen Architekturen nicht verf\u00fcgbar. Der aktuelle Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> muss direkt an die entsprechenden Funktionen \u00fcbergeben werden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Derzeit \u00fcberpr\u00fcft crypto\/cipher diese Methoden weiterhin auf Block-Werten, auch wenn sie von der Standardbibliothek nicht mehr unterst\u00fctzt werden.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Neue Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> gibt er <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD verwendet.<\/a>, das AES-GCM implementiert und w\u00e4hrend des Seal einen zuf\u00e4lligen einmaligen Schl\u00fcssel generiert und ihn am Anfang des verschl\u00fcsselten Textes hinzuf\u00fcgt.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementierung <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, zur\u00fcckgegeben <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> in Verbindung mit <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> jetzt mehrere Male schneller auf amd64 und arm64.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewOFB\">NewOFB<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBEncrypter\">NewCFBEncrypter<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> sind jetzt als obsolet erkl\u00e4rt. Die Modi OFB und CFB sind nicht authentifiziert, was in der Regel aktiven Angriffen erm\u00f6glicht, den Klartext zu manipulieren und wiederherzustellen. Anwendungen wird empfohlen, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD verwendet.<\/a> stattdessen zu verwenden. Wenn ein nicht authentifizierter Modus <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> erforderlich ist, kann man <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> anstattdessen verwenden.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa\/\">crypto\/ecdsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa#PrivateKey.Sign\">PrivateKey.Sign<\/a> generiert jetzt eine deterministische Signatur gem\u00e4\u00df <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, wenn die Zufallsquelle nil ist.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/md5\/\">crypto\/md5<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Der zur\u00fcckgegebene Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, implementiert jetzt auch das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand\/\">crypto\/rand<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Die Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Read<\/a> garantiert jetzt das Fehlen von Fehlern. Wenn Read w\u00e4hrend des Lesens auf einen Fehler st\u00f6\u00dft, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, wird das Programm ohne R\u00fcckkehr beendet. Beachten Sie, dass der Standard-Reader dokumentiert ist, um immer erfolgreich zu arbeiten, daher sollte diese \u00c4nderung nur Programme betreffen, die die Variable Reader \u00fcberschreiben. Eine Ausnahme bilden Linux-Kerne vor Version 3.17, bei denen der Standard-Reader weiterhin \/dev\/urandom \u00f6ffnet und fehlschlagen kann.<\/p>\n<p><\/noindex> <\/p>\n<p>In Linux 6.11 und neuer verwendet der Reader jetzt den Systemaufruf getrandom \u00fcber vDSO. Dies ist mehrere Male schneller, typischerweise bei kleinen Lesevorg\u00e4ngen.<\/p>\n<p>In OpenBSD verwendet der Reader jetzt arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Neue Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> kann jetzt kryptografisch sichere zuf\u00e4llige Textstrings generieren.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa\/\">crypto\/rsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> gibt jetzt einen Fehler zur\u00fcck, wenn ein Schl\u00fcssel mit weniger als 1024 Bits angefordert wird. Alle Methoden Sign, Verify, Encrypt und Decrypt geben jetzt einen Fehler zur\u00fcck, wenn sie mit einem Schl\u00fcssel mit weniger als 1024 Bits verwendet werden. Solche Schl\u00fcssel sind unsicher und sollten nicht verwendet werden. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-Konfiguration<\/a> rsa1024min=0 stellt das alte Verhalten wieder her, aber Go-Entwickler empfehlen dies nur bei Bedarf und nur f\u00fcr Tests, zum Beispiel indem Sie die Zeile \/\/go:debug rsa1024min=0 in die Testdatei hinzuf\u00fcgen. Neu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">Nummer 00 oder<\/a> GenerateKey bietet einen benutzerfreundlichen, standardm\u00e4\u00dfigen 2024-Bit-Testschl\u00fcssel.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Es ist jetzt sicherer und effizienter, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> bis zu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute ist jetzt schneller bei teilweise gef\u00fcllten <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, zum Beispiel beim Extrahieren eines Schl\u00fcssels aus JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Das Paket lehnt jetzt mehr ung\u00fcltige Schl\u00fcssel ab, selbst wenn Validate nicht aufgerufen wird, und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> kann jetzt neue Fehler f\u00fcr fehlerhafte Zufallsquellen zur\u00fcckgeben. Die Felder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> struct seccomp_data <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> werden jetzt auch verwendet und validiert, selbst wenn einige Werte fehlen. Zudem wurden \u00c4nderungen in crypto\/x509 bez\u00fcglich der Analyse und Extraktion von RSA-Schl\u00fcsseln vorgenommen, wie unten beschrieben.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> unterst\u00fctzen jetzt SHA-512\/224, SHA-512\/256 und SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> verwendet jetzt eine etwas andere Methode zur Generierung der privaten Exponenten (Karmich-Funktion anstelle der Euler-Funktion). Seltene Anwendungen, die Schl\u00fcssel nur aus einfachen Zahlen von externen Quellen neu erstellen, k\u00f6nnen unterschiedliche, aber kompatible Ergebnisse erzeugen.<\/p>\n<p><\/noindex> <\/p>\n<p>Die Operationen mit \u00f6ffentlichen und privaten Schl\u00fcsseln sind jetzt bis zu zweimal schneller auf wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: zur\u00fcckgegebenes Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> implementiert jetzt auch das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha256\/\">crypto\/sha256<\/a>: zur\u00fcckgegebene Werte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> implementieren jetzt ebenfalls das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha512\/\">crypto\/sha512<\/a>: zur\u00fcckgegebene Werte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New\">sha512.New<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New384\">sha512.New384<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_224\">sha512.New512_224<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, implementieren jetzt ebenfalls das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle\/\">crypto\/subtle<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Neue Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> erm\u00f6glicht es dem Benutzer, eine Funktion mit aktivierten architekturspezifischen Funktionen auszuf\u00fchren, die die Unver\u00e4nderlichkeit bestimmter Anweisungen hinsichtlich der zeitlichen Werte von Daten gew\u00e4hrleisten. Dies kann verwendet werden, um sicherzustellen, dass Code, der f\u00fcr die Ausf\u00fchrung in konstanter Zeit geschrieben wurde, nicht durch Funktionen auf Prozessor-Ebene so optimiert wurde, dass er in variabler Zeit funktioniert. Derzeit verwendet WithDataIndependentTiming das Bit PSTATE.DIT auf arm64 und hat auf allen anderen Architekturen keine Funktionalit\u00e4t. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-Konfiguration<\/a> dataindependenttiming=1 aktiviert den DIT-Modus f\u00fcr das gesamte Go-Programm.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Fazit <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> muss entweder vollst\u00e4ndig mit der Eingabe \u00fcberlappen oder nicht. Fr\u00fcheres Verhalten war hinsichtlich dessen undefiniert, w\u00e4hrend XORBytes jetzt einen Panic verursachen wird.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls\/\">crypto\/tls<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Der TLS-Server unterst\u00fctzt jetzt Encrypted Client Hello (ECH). Diese Funktion kann aktiviert werden, indem das Feld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ein neuer post-quanten Schl\u00fcssel-Austausch-Mechanismus <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> wird jetzt unterst\u00fctzt und ist standardm\u00e4\u00dfig aktiviert, wenn <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> nil ist. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-Konfiguration<\/a> tlsmlkem=0 gibt die Standardwerte zur\u00fcck.<\/p>\n<p><\/noindex> <\/p>\n<p>Die Unterst\u00fctzung f\u00fcr den experimentellen Schl\u00fcssel-Austausch X25519Kyber768Draft00 wurde entfernt.<\/p>\n<p> <noindex><\/p>\n<p>Der Austausch von Schl\u00fcsseln wird jetzt vollst\u00e4ndig \u00fcber das Paket crypto\/tls verarbeitet. Die Reihenfolge <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> wird nun ignoriert, und der Inhalt wird nur verwendet, um zu bestimmen, welche Schl\u00fcsselaustausche einbezogen werden, wenn das Feld ausgef\u00fcllt ist.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neues Feld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> listet die Identifikatoren der Erweiterungen auf, die in der Client Hello-Nachricht empfangen wurden. Dies kann n\u00fctzlich sein, um TLS-Clients zu fingerprinten.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509\/\">crypto\/x509<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-Konfiguration<\/a> x509sha1 wurde entfernt. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> unterst\u00fctzt keine auf SHA-1 basierenden Signaturen mehr.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> setzt jetzt die Schnittstellen um <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Das Standardfeld f\u00fcr Zertifikatspolitiken wurde ge\u00e4ndert von <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> findet man <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Bei der Analyse von Zertifikaten werden beide Felder ausgef\u00fcllt, aber bei der Erstellung von Zertifikatspolitiken werden die Werte aus dem Feld Certificate.Policies anstelle von Certificate.PolicyIdentifiers verwendet. Diese \u00c4nderung kann zur\u00fcckgesetzt werden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">\u00fcber die GODEBUG-Einstellung<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> wird jetzt eine Seriennummer generieren, die eine RFC 5280-konforme Methode beim \u00dcbergeben der Vorlage im Feld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil verwendet, anstelle eines Fehlers.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> unterst\u00fctzt jetzt die Richtlinienvalidierung, wie in RFC 5280 und RFC 9618 definiert. Das neue Feld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> kann auf ein akzeptables Set von Richtlinien gesetzt werden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Es werden nur Zertifikatketten mit g\u00fcltigen Richtlinien zur\u00fcckgegeben von <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS8PrivateKey\">MarshalPKCS8PrivateKey<\/a> gibt jetzt einen Fehler zur\u00fcck, anstatt einen falschen RSA-Schl\u00fcssel zu extrahieren. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> hat keine Fehler-R\u00fcckgabe, und sein Verhalten bei bereitgestellten falschen Schl\u00fcsseln bleibt unbestimmt.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> verwendet jetzt und validiert die kodierten CRT-Werte und kann daher ung\u00fcltige RSA-Schl\u00fcssel ablehnen, die zuvor akzeptiert wurden. Die Nutzung von <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-Einstellung<\/a> x509rsacrt=0 f\u00fchrt zur\u00fcck zum Neuberechnen der CRT-Werte.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\/\">debug\/elf<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Das Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> f\u00fcgt Unterst\u00fctzung f\u00fcr die Verarbeitung von Versionssymbolen in dynamischen ELF-Dateien (Executable and Linkable Format) hinzu. Neue Methode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> gibt eine Liste der dynamischen Versionen zur\u00fcck, die in der ELF-Datei definiert sind. Neue Methode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> gibt eine Liste der dynamischen Versionen zur\u00fcck, die von dieser ELF-Datei ben\u00f6tigt werden und in anderen ELF-Objekten definiert sind. Schlie\u00dflich weisen die neuen Felder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> die Version des Symbols an.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/\">encoding<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Zwei neue Schnittstellen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> wurden eingef\u00fchrt, um eine textuelle oder bin\u00e4re Darstellung eines Objekts zu einem Byte-Slice hinzuzuf\u00fcgen. Diese Schnittstellen bieten die gleiche Funktionalit\u00e4t wie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, jedoch f\u00fcgen sie die Daten direkt in das bestehende Slice ein, anstatt bei jedem Mal ein neues Slice zu reservieren. Diese Schnittstellen werden jetzt von Typen der Standardbibliothek implementiert, die bereits TextMarshaler und\/oder BinaryMarshaler implementieren.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json\/\">encoding\/json<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Bei der Konstruktion wird das Feld der Struktur mit der neuen Option omitzero im Felddesignator weggelassen, wenn sein Wert null ist. Wenn der Typ des Feldes \u00fcber die Methode IsZero() bool verf\u00fcgt, wird sie verwendet, um zu bestimmen, ob der Wert null ist. Andernfalls ist der Wert null, wenn er <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">der nullwert f\u00fcr seinen Typ ist<\/a>. Das Feldtag omitzero ist sauberer und weniger fehleranf\u00e4llig als omitempty, wenn die Absicht besteht, nullwerte auszulassen. Insbesondere im Gegensatz zu omitempty l\u00e4sst omitzero nullwerte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> aus, was eine h\u00e4ufige Quelle von Problemen darstellt.<\/p>\n<p><\/noindex> <\/p>\n<p>Wenn sowohl omitempty als auch omitzero angegeben sind, wird das Feld weggelassen, wenn der Wert leer oder null ist (oder beides zusammen).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> enth\u00e4lt jetzt integrierte Strukturen zur Bereitstellung detaillierter Fehlermeldungen.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Alle go\/types-Datenstrukturen, die Paarmethoden wie Len() int und At(int) T offenlegen, verf\u00fcgen nun ebenfalls \u00fcber Methoden, die Iteratoren zur\u00fcckgeben, was den folgenden Code vereinfacht:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Daf\u00fcr:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Methoden: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.EmbeddedTypes\">Interface.EmbeddedTypes<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.ExplicitMethods\">Interface.ExplicitMethods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.Methods\">Interface.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#MethodSet.Methods\">MethodSet.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Named.Methods\">Named.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Scope.Children\">Scope.Children<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Struct.Fields\">Struct.Fields<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Tuple.Variables\">Tuple.Variables<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeList.Types\">TypeList.Types<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeParamList.TypeParams\">TypeParamList.TypeParams<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Union.Terms\">Union.Terms<\/a><\/p>\n<p><\/noindex> <\/p>\n<h4>hash\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32\/\">hash\/adler32<\/a>: zur\u00fcckgegebenes Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">New<\/a>, implementiert jetzt auch das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32\/\">hash\/crc32<\/a>: zur\u00fcckgegebene Werte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">New<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, implementieren jetzt ebenfalls das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64\/\">hash\/crc64<\/a>: zur\u00fcckgegebenes Wert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">New<\/a>, implementiert jetzt auch das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv\/\">hash\/fnv<\/a>: zur\u00fcckgegebene Werte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32\">New32<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32a\">New32a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64\">New64<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64a\">New64a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128\">New128<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, implementieren jetzt ebenfalls das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash\/\">hash\/maphash<\/a>: neue Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> k\u00f6nnen den Hash eines beliebigen vergleichbaren Wertes berechnen. Dies erm\u00f6glicht das Hashing von allem, was als Schl\u00fcssel in einem Go-W\u00f6rterbuch verwendet werden kann.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog\/\">log\/slog<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Neu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> ist ein Handler, der niemals aktiviert wird und immer seine Ausgabe verwirft.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Ebene<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> implementiert jetzt das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4>math\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big\/\">math\/big<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Float\">Float<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Int\">Int<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> implementiert jetzt das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/\">math\/rand<\/a>: Aufrufe der veralteten hochrangigen Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> haben keinen Effekt mehr. Um das alte Verhalten wiederherzustellen, kann man <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">die Einstellung GODEBUG<\/a> randseednop=0 verwenden. Mehr Kontext in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">Angeboten 67273<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2\/\">math\/rand\/v2<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#ChaCha8\">ChaCha8<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> implementiert jetzt das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/\">net<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#ListenConfig\">ListenCondig<\/a> verwendet jetzt standardm\u00e4\u00dfig MPTCP auf Systemen, auf denen es unterst\u00fctzt wird (derzeit nur Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> implementiert jetzt die Schnittstelle <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/\">net\/http<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Die Einschr\u00e4nkung hat sich ge\u00e4ndert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> auf empfangene Informationsantworten 1xx als Reaktion auf die Anfrage. Zuvor stoppte dies die Anfrage und gab einen Fehler zur\u00fcck, nachdem mehr als 5 Antworten 1xx empfangen wurden. Nun wird ein Fehler nur zur\u00fcckgegeben, wenn die gesamte Gr\u00f6\u00dfe aller Antworten 1xx die Konfigurationseinstellung \u00fcberschreitet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Dar\u00fcber hinaus, wenn die Anfrage einen Hook zum Tracking hat <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, gibt es jetzt keine Begrenzung f\u00fcr die Gesamtzahl der Antworten 1xx. Der Hook Got1xxResponse kann einen Fehler zur\u00fcckgeben, um die Anfrage zu stoppen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> haben jetzt ein HTTP2-Feld, das die Konfiguration der HTTP\/2-Protokolleinstellungen erm\u00f6glicht.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neue Felder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> bieten eine einfache M\u00f6glichkeit, zu konfigurieren, welche Protokolle der Server oder Client verwendet.<\/p>\n<p><\/noindex> <\/p>\n<p>Server und Client k\u00f6nnen so konfiguriert werden, dass sie unverschl\u00fcsselte HTTP\/2-Verbindungen unterst\u00fctzen.<\/p>\n<p> <noindex><\/p>\n<p>Wenn <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> enth\u00e4lt UnencrypterHTTP2, der Server akzeptiert HTTP\/2-Verbindungen auf unverschl\u00fcsselten Ports. Der Server kann gleichzeitig HTTP\/1 und unverschl\u00fcsseltes HTTP\/2 auf demselben Port akzeptieren.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Wenn <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> enth\u00e4lt UnencryptedHTTP2 und unterst\u00fctzt kein HTTP1, der Transport nutzt unverschl\u00fcsseltes HTTP\/2 f\u00fcr Adressen <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Wenn der Transport konfiguriert ist, um sowohl HTTP\/1 als auch unverschl\u00fcsseltes HTTP\/2 gleichzeitig zu verwenden, wird HTTP\/1 verwendet.<\/p>\n<p><\/noindex> <\/p>\n<p>Die Unterst\u00fctzung f\u00fcr unverschl\u00fcsseltes HTTP\/2 verwendet \u201eHTTP\/2 mit Vorwissen\u201c (RFC 9113, Abschnitt 3.3). Der veraltete Header \u201eUpgrade: h2c\u201c wird nicht unterst\u00fctzt.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip\/\">net\/netip<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Addr\">Addr<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#AddrPort\">AddrPort<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> implementieren nun die Schnittstellen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url\/\">net\/url<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url#URL\">URL<\/a> implementiert jetzt auch das Interface <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user\/\">os\/user<\/a><\/h4>\n<p> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> kann nun auf Windows Nano Server verwendet werden. Die Implementierung wurde aktualisiert, um die Verwendung von Funktionen aus der Bibliothek NetApi32 zu vermeiden, die im Nano Server nicht vorhanden ist.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Lookup<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> unterst\u00fctzen nun die folgenden integrierten Dienstkonten des Benutzers:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>NT AUTHORITYSYSTEM<\/li>\n<li>NT AUTHORITYLOCAL SERVICE<\/li>\n<li>NT AUTHORITYNETWORK SERVICE<\/li>\n<\/ul>\n<p> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> wurde erheblich beschleunigt, wenn der aktuelle Benutzer mit einer langsamen Domain verbunden ist, was f\u00fcr viele Unternehmensbenutzer \u00fcblich ist. Die neue Implementierungsleistung liegt jetzt im Millisekundenbereich, im Vergleich zu der vorherigen Implementierung, die mehrere Sekunden oder sogar Minuten in Anspruch nehmen konnte, bis sie abgeschlossen war.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> gibt jetzt den Besitzerprozess des Benutzers zur\u00fcck, wenn der aktuelle Thread sich als ein anderer Benutzer ausgibt. Fr\u00fcher gab es einen Fehler zur\u00fcck.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp\/\">regexp<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp#Regexp\">Regexp<\/a> implementiert jetzt die Schnittstelle <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAdapter<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/\">Laufzeit<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Die Funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> wurde jetzt als veraltet erkl\u00e4rt. Im neuen Code sollte die Verwendung des Systempfades zur Bestimmung des 'go'-Bin\u00e4rprogramms bevorzugt werden, und 'go env GOROOT' sollte verwendet werden, um GOROOT zu bestimmen.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\/\">strings<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Das Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> f\u00fcgt einige Funktionen zur Arbeit mit Iteratoren hinzu:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> gibt einen Iterator \u00fcber durch neue Zeilen getrennte Strings in der Zeichenkette zur\u00fcck.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> gibt einen Iterator \u00fcber alle Teilstrings der Zeichenkette zur\u00fcck, die durch den Separator getrennt sind.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> gibt einen Iterator \u00fcber Teilstrings der Zeichenkette zur\u00fcck, die nach jedem Auftreten des Separators getrennt sind.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> gibt einen Iterator \u00fcber Teilstrings der Zeichenkette zur\u00fcck, die um Sequenzen von Leerzeichen herum definiert sind.<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsFuncSeq\">FieldsFuncSeq<\/a> gibt einen Iterator \u00fcber Teilstrings der Zeichenkette zur\u00fcck, die um Sequenzen von Unicode-Codepunkten herum definiert sind, die dem Pr\u00e4dikat entsprechen.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementierung <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> wurde ge\u00e4ndert, um die Leistung zu verbessern, insbesondere f\u00fcr W\u00f6rterbuch\u00e4nderungen. Beispielsweise ist die Wahrscheinlichkeit eines Wettbewerbs bei nicht \u00fcberlappenden Mengen in gro\u00dfen W\u00f6rterb\u00fcchern geringer, und es ist keine Anlaufzeit mehr erforderlich, um von einem W\u00f6rterbuch mit geringer Wettbewerbsintensit\u00e4t zu profitieren.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Wenn Sie auf Probleme sto\u00dfen, setzen Sie GOEXPERIMENT=nosynchashtriemap w\u00e4hrend des Builds, um zur alten Implementierung zur\u00fcckzukehren, und bitte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">f\u00fcllen Sie das Problemformular aus<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/\">testing<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Neue Methoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> geben den Kontext zur\u00fcck, der nach Abschluss des Tests und vor der Ausf\u00fchrung von Testbereinigungsfunktionen zur\u00fcckgesetzt wird.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Neue Methoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> k\u00f6nnten verwendet werden, um das Arbeitsverzeichnis w\u00e4hrend der Test- oder Benchmark-Ausf\u00fchrung zu \u00e4ndern.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Vorlagen unterst\u00fctzen jetzt range-over-func und range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">time<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">Zeit<\/a> setzt jetzt die Schnittstellen um <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> und <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Ports<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Wie bereits erw\u00e4hnt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">ank\u00fcndigt<\/a> in den Release-Notizen von Go 1.23 erfordert Go 1.24 einen Linux-Kernel der Version 3.2 oder h\u00f6her.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 ist die letzte Version, die auf macOS 11 Big Sur l\u00e4uft. Go 1.25 wird macOS 12 Monterey oder h\u00f6her erfordern.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Die Compiler-Direktive go:wasmexport wurde zu Go-Anwendungen hinzugef\u00fcgt, um Funktionen in den WebAssembly-Host zu exportieren.<\/p>\n<p> <noindex><\/p>\n<p>Im WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) unterst\u00fctzt Go 1.24 den Build von Go-Anwendungen als <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> durch die Angabe des Build-Flags -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Mehr Typen sind jetzt als Argument- oder R\u00fcckgabewerttypen f\u00fcr go:wasmimport-Funktionen erlaubt. Besonders bool, string, uintptr und Zeiger auf bestimmte Typen sind zul\u00e4ssig (Details sind zu finden in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">Dokumentation.<\/a>), zusammen mit 32-Bit und 64-Bit Ganzzahlen und Flie\u00dfkommazahlen sowie unsafe.Pointer, die bereits erlaubt sind. Diese Typen sind auch als Argument- oder R\u00fcckgabewerttypen f\u00fcr go:wasmexport-Funktionen zul\u00e4ssig.<\/p>\n<p><\/noindex> <\/p>\n<p>Unterst\u00fctzungsdateien f\u00fcr WebAssembly wurden von misc\/wasm in lib\/wasm verschoben.<\/p>\n<p>Die urspr\u00fcngliche Speicherkapazit\u00e4t wurde erheblich reduziert, insbesondere f\u00fcr kleine WebAssembly-Anwendungen.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>Der 32-Bit-Port windows\/arm (GOOS=windows GOARCH=arm) wurde als fehlerhaft markiert. Details in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Quelle: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/development\/17884044\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":121951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-121950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/go-1-24\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Go 1.24 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/go-1-24\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Go 1.24 | ProHoster","description":"Die neue Version der Programmiersprache Go, Version 1.24, erscheint sechs Monate nach Go 1.23. Die meisten \u00c4nderungen betreffen die Implementierung von Toolchains, Laufzeitumgebungen und Bibliotheken. Wie immer garantiert die Ver\u00f6ffentlichung die Kompatibilit\u00e4t mit Go 1. Die Entwickler der Sprache erwarten, dass nahezu alle Go-Programme weiterhin wie gewohnt kompiliert und ausgef\u00fchrt werden k\u00f6nnen. Die \u00c4nderungen in Go 1.24 unterst\u00fctzen jetzt vollst\u00e4ndig generische Typaliasierungen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Go 1.24 | ProHoster","og:description":"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441","og:url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/go-1-24","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2025-02-15T12:22:29+00:00","article:modified_time":"2025-02-15T12:22:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"121950","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 10:38:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 10:38:20","updated":"2026-01-23 10:38:20"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}