Vaia 1.24

Vaia 1.24

Unha nova versión do idioma Go, a versión 1.24, chega seis meses despois Vaia 1.23. A maioría dos cambios están na implementación da cadea de ferramentas, o tempo de execución e as bibliotecas. Como sempre, o lanzamento ofrece promesa de compatibilidade Go 1. Os deseñadores de linguaxes esperan que case todos os programas Go continúen recompilando e executándose como antes.

Cambios lingüísticos

Go 1.24 agora é totalmente compatible alias de tipo xenérico: un alias de tipo pódese parametrizar como un tipo declarado. Detalles en especificacións lingüísticas. Polo momento, esta función pódese desactivar configurando GOEXPERIMENT=noaliastypeparams; Non obstante, a opción aliastypeparams eliminarase en Go 1.25.

Ferramentas

Vaia mando

Os módulos Go agora poden rastrexar as dependencias executables mediante a directiva da ferramenta en go.mod. Isto elimina a necesidade da solución alternativa anterior de engadir ferramentas como importacións baleiras nun ficheiro normalmente chamado "tools.go". O comando go tool agora pode executar estas ferramentas ademais das ferramentas que veñen con Go. Pódese atopar máis información en documentación.

A nova marca -tool para go get fai que se engadan directivas de ferramenta ao módulo actual para os paquetes especificados ademais de engadir directivas require.

Novo ferramenta de meta-patrón refírese a todas as ferramentas do módulo actual. Isto pódese usar para actualizalos todos mediante a ferramenta go get ou para instalalos no seu directorio GOBIN mediante a ferramenta go install.

Os executables creados mediante go run e o novo comportamento da ferramenta go agora están almacenados na caché de compilación de Go. Isto fai posibles lanzamentos repetidos debido ao aumento da caché. # 69290.

Os comandos go build and go install agora aceptan a marca -json, que informa a saída de compilación e os erros como saída JSON estruturada na saída estándar. Detalles do formato, consulta go help buildjson.

Ademais, go test -json agora informa dos erros de saída e compilación en JSON, mesturados co resultado da proba JSON. Pódense distinguir polos novos tipos de acción, pero se causan problemas no sistema de integración de probas, podes recurrir á saída de texto da compilación mediante Configuración de GODEBUG gotestjsonbuildtext=1.

A nova variable de ambiente GOAUTH ofrece un xeito flexible de autorizar extraccións de módulos privados. Podes ver os detalles en go help goauth.

Agora está instalado o comando go build versión do módulo principal no binario compilado, baseado nunha etiqueta e/ou nunha confirmación de control de versión. O sufixo +sucio engadirase se hai cambios sen confirmar. A bandeira -buildvcs=false pódese usar para omitir a información de control de versións do binario.

novo Configuración de GODEBUG toolchaintrace=1 agora pódese usar para seguir o proceso de selección da cadea de ferramentas no comando go.

Cgo

Cgo admite novas anotacións para funcións C para mellorar o rendemento en tempo de execución. #cgo noescape cFunctionName dille ao compilador que non se escapa a memoria pasada á función C cFunctionName. #cgo nocallback cFunctionName dille ao compilador que a función C cFunctionName non devolve ningunha función Go. Pódese atopar máis información en documentación cgo.

Cgo actualmente négase a compilar chamadas a unha función C que teña varias declaracións incompatibles. Por exemplo, se f se declara como void f(int) e void f(double), cgo informará dun erro en lugar de xerar posiblemente unha secuencia de chamada f(0) non válida. A novidade desta versión é a detección mellorada desta condición de erro cando aparecen declaracións incompatibles en ficheiros diferentes. # 67699.

Objdump

A ferramenta objdump agora admite a desmontaxe en LoongArch de 64 bits (GOARCH=loong64), RISC-V (GOARCH=riscv64) e S390X (GOARCH=s390x).

Veterinario

O novo analizador de probas informa de erros comúns en declaracións de proba, fuzzer, benchmark e exemplos en conxuntos de probas, como nomes con formato incorrecto, sinaturas non válidas ou exemplos que documentan identificadores inexistentes. Algúns destes erros poden facer que as probas fallen.

O analizador printf existente agora informa de diagnósticos para chamadas do formato fmt.Printf(s), onde s é unha cadea de formato non constante sen outros argumentos. Tales chamadas son case sempre un erro, xa que o valor de s pode conter o carácter %; use fmt.Print no seu lugar. 60529. Esta comprobación tende a atopar cousas no código existente e, polo tanto, só se aplica cando a versión do idioma (como especifica a directiva go do ficheiro go.mod ou os comentarios `//go:build`) é polo menos Go 1.24, para evitar que se produzan longas interrupcións de integración ao actualizar á cadea de ferramentas Go 1.24.

O analizador de etiquetas de compilación existente agora informa dos diagnósticos cando hai unha etiqueta de compilación incorrecta limitación de compilación da versión anterior Vaia á directiva //go:build. Por exemplo, //go:build go1.23.1 refírese a unha versión puntual; no seu lugar use //go:build go1.23. # 64127.

O analizador de bloqueo de copias existente agora informa dun diagnóstico cando se declara unha variable nun bucle "for" triplo, como for i := iter(); feito (i); i = next(i) { … }, contén sync.Locker, como sync.Mutex. Vaia 1.22 cambiou o comportamento de tales bucles para crear unha nova variable para cada iteración, copiando os valores da iteración anterior; Esta copia non é segura para bloqueos. # 66387.

GOCACHEPROG

Agora os procesos fillos que implementan un protocolo JSON entre a ferramenta cmd/go e o proceso fillo nomeado pola variable de ambiente GOCACHEPROG poden implementar o mecanismo binario interno cmd/go e de caché de proba. Anteriormente era para GOEXPERIMENT. Os detalles do protocolo pódense ver en documentación.

Tempo de realización

Varias melloras de rendemento en tempo de execución reduciron a sobrecarga da CPU nun 2-3 % de media nun conxunto de puntos de referencia representativos. Os resultados poden variar dependendo da aplicación. Estas melloras inclúen unha nova implementación de mapas integrada baseada en Táboas suecas, unha asignación máis eficiente da memoria de pequenos obxectos e unha nova implementación interna do mutex en tempo de execución.

A nova implementación de mapas incorporada e o novo mutex de tempo de execución interno pódense desactivar configurando GOEXPERIMENT=noswissmap e GOEXPERIMENT=nospinbitmutex no momento da compilación, respectivamente.

Compilador

O compilador xa prohibía definir novos métodos con tipos de receptor xerados por cgo, pero era posible evitar esta restrición mediante un alias de tipo. Go 1.24 agora sempre informa dun erro se o receptor indica un tipo xerado por cgo, ben directa ou indirectamente (a través dun alias de tipo).

Enlazador

O enlazador agora xera un identificador de compilación GNU (entrada ELF NT_GNU_BUILD_ID) nas plataformas ELF e un UUID (comando de carga Mach-O LC_UUID) en macOS por defecto. O ID de compilación ou UUID deriva do ID de compilación de Go. Pódese desactivar coa marca de ligazón -B none ou substituír coa marca de ligazón -B 0xNNNN cun valor hexadecimal especificado polo usuario.

Promoción

Segundo se indica en Notas da versión de Go 1.22, Go 1.24 agora require a instalación de Go 1.22.6 ou posterior. Os desenvolvedores esperan que Go 1.26 requira un lanzamento puntual de Go 1.24 ou posterior para lanzarse.

Biblioteca estándar

Acceso ao sistema de ficheiros restrinxido por directorios

Novo tipo os.root Ofrece a capacidade de realizar operacións do sistema de ficheiros dentro dun directorio específico.

Función os.OpenRoot abre o directorio e volve os.root. Métodos activados os.root operan nese directorio e non permiten que as rutas fagan referencia a localizacións fóra do directorio, incluídas as que seguen ligazóns simbólicas fóra do directorio. Os métodos en os.Root reflicten a maioría das operacións do sistema de ficheiros dispoñibles no paquete os, incluíndo, por exemplo, os.Root.Open, os.Root.Crear, os.Root.Mkdir и os.Root.Stat.

Nova función de referencia

Agora os benchmarks poden usar un método máis rápido e menos propenso a erros probando.B.Loop para iterar sobre un punto de referencia como para b.Loop() { … } en lugar das típicas estruturas de bucle que implican bN como para o rango bN Isto ofrece dúas vantaxes significativas:

  • A función de referencia execútase exactamente unha vez por conta, polo que os custosos pasos de configuración e limpeza só se realizan unha vez.
  • Os parámetros e os resultados da chamada función viven, evitando que o compilador optimice completamente o corpo do bucle.

Finalizadores mellorados

Nova característica runtime.AddCleanup é un mecanismo de finalización máis flexible, máis eficiente e menos propenso a erros que runtime.SetFinalizer. AddCleanup engade unha función de limpeza a un obxecto que se executará en canto o obxecto non estea dispoñible. Non obstante, a diferenza de SetFinalizer, pódense unir varias limpezas a un só obxecto, as limpezas pódense unir a punteiros internos, as limpezas normalmente non provocan fugas cando os obxectos forman un ciclo e as limpezas non atrasan a desasignación do obxecto ou dos obxectos aos que apunta. O código novo debería preferir AddCleanup sobre SetFinalizer.

Novo paquete débil

Novo paquete feble proporciona indicadores débiles.

Os punteiros débiles son unha primitiva de baixo nivel proporcionada para crear estruturas eficientes en memoria, como dicionarios débiles para mapear valores, dicionarios de canonización para calquera cousa que non cubra un paquete. único, e varios tipos de cachés. Para apoiar estes casos de uso, esta versión tamén ofrece runtime.AddCleanup и maphash.Comparable.

Novo paquete crypto/mlkem

Novo paquete cripto/mlkem implementa ML-KEM-768 e ML-KEM-1024.

ML-KEM é un mecanismo de intercambio de claves poscuántico, anteriormente coñecido como Kyber e especificado en FIPS 203.

Novos paquetes crypto/hkdf, crypto/pbkdf2 e crypto/sha3

Novo paquete cripto/hkdf implementa a función de derivación de claves "Extract-and-Expand" baseada en HMAC HKDF como se define en RFC 5869.

Novo paquete crypto/pbkdf2 implementa a función de derivación de clave baseada en contrasinal PBKDF2 tal e como se define en RFC 8018.

Novo paquete cripto/sha3 implementa a función hash SHA-3 e as funcións de saída extensibles SHAKE e cSHAKE tal e como se definen en FIPS 202.

Os tres paquetes baséanse nos paquetes golang.org/x/crypto/… existentes.

Conformidade con FIPS 140-3

Esta versión inclúe un novo conxunto de mecanismos para garantir o cumprimento da FIPS 140-3.

O módulo criptográfico Go é un conxunto de paquetes de biblioteca estándar internos que se usan de forma transparente para implementar algoritmos aprobados por FIPS 140-3. As aplicacións non requiren cambios para usar o módulo criptográfico Go para algoritmos aprobados.

A nova variable de ambiente GOFIPS140 pódese usar para seleccionar a versión do módulo de criptografía Go para usar nunha compilación. Novo Configuración de GODEBUG fips140 pódese usar para activar o modo FIPS 140-3 en tempo de execución.

Go 1.24 inclúe o módulo criptográfico Go v1.0.0, que se está a probar actualmente cun laboratorio acreditado por CMVP.

Nova proba/proba de sincronización de paquetes experimentais

Novo paquete experimental proba/sincronización Ofrece soporte para probar código simultáneo.

  • Función synctest.run executa un grupo de goroutines nunha "burbulla" illada. Na burbulla da función paquete tempo operar con reloxos falsos.
  • Funcións synctest.esperar agarda ata que todas as goroutines estean bloqueadas na burbulla actual.

Os detalles pódense atopar na documentación do paquete.

O paquete synctest é experimental e debe activarse configurando GOEXPERIMENT=synctest. A API do paquete pode cambiar en versións futuras. EN # 67434 Podes ver máis detalles e proporcionar comentarios.

Pequenos cambios na biblioteca

ficheiro

As implementacións (*Writer.AddFS) en archive/zip e archive/tar agora escriben a cabeceira do directorio para un directorio baleiro.

bytes

Paquete bytes engade varias funcións que funcionan con iteradores:

  • Liñas Devolve un iterador sobre cadeas separadas por novas liñas nun segmento de bytes.
  • DividirSeq devolve un iterador sobre todas as subporcións dunha porción de bytes separadas por un separador.
  • SplitAfterSeq devolve un iterador sobre as subporcións dunha porción de bytes, dividida despois de cada aparición do separador.
  • CamposSeq devolve un iterador sobre subslices dunha porción de bytes arredor de secuencias de caracteres espaciais, tal e como se define unicode.IsSpace
  • CamposFuncSeq devolve un iterador sobre subslices dunha porción de bytes arredor de secuencias de puntos de código Unicode que satisfacen un predicado.

cripto/aes

Valor de retorno NewChipher xa non implementa os métodos NewCTR, NewGCM, NewCBCEncrypter e NewCBCDecrypter. Estes métodos non estaban documentados e non estaban dispoñibles en todas as arquitecturas. Agora o significado Bloquear deben pasarse directamente ás funcións correspondentes cripto/cifrado. Actualmente, cripto/cifrado aínda verifica estes métodos nos valores de bloque, aínda que xa non son compatibles coa biblioteca estándar.

cripto/cifrado

Nova característica NewGCMWithRandomNonce volve AEAD, que implementa AES-GCM xerando un nonce aleatorio durante Seal e anteponéndoo ao texto cifrado.

Implantación córrego, volveu NovoCTR cando se usa con cripto/aes agora varias veces máis rápido en amd64 e arm64.

NovoOFB, Novo CFBEncrypter и Novo CFBDecrypter agora están declaradas obsoletas. Os modos OFB e CFB non están autenticados, o que xeralmente permite que os ataques activos manipulen e recuperen texto plano. Recoméndase usar as aplicacións AEAD a cambio. Se o modo non está autenticado córrego necesario, pódese utilizar NovoCTR a cambio.

cripto/ecdsa

Asinar chave privada agora crea unha sinatura determinista segundo RFC 6979, se a fonte de aleatoriedade é nula.

cripto/md5

Valor de retorno md5.novo, agora tamén implementa a interface codificación.binaryappender.

cripto/rand

Función Ler agora garante sen fallos. Se Read atopa un erro ao ler Reader, o programa finalizará definitivamente. Teña en conta que o Reader predeterminado está documentado para funcionar sempre correctamente, polo que este cambio só debería afectar aos programas que anulan a variable Reader. Unha excepción son os núcleos de Linux anteriores á 3.17, onde o lector predeterminado aínda abre /dev/urandom e pode fallar.

En Linux 6.11 e posteriores, Reader agora usa a chamada ao sistema getrandom a través de vDSO. Isto é varias veces máis rápido, normalmente para pequenas lecturas.

En OpenBSD Reader agora usa arc4random_buf(3).

Nova característica Texto agora pode xerar cadeas de texto aleatorias criptograficamente seguras.

cripto/rsa

Xerar clave agora devolve un erro se se solicita unha lonxitude de chave inferior a 1024 bits. Todos os métodos de asinar, verificar, cifrar e desencriptar agora devolven un erro se se usan cun tamaño de chave inferior a 1024 bits. Estas chaves non son seguras e non se deben usar. Configurando GODEBUG rsa1024min=0 restaura o comportamento antigo, pero os desenvolvedores de Go recomendan facelo só cando sexa necesario e só nas probas, por exemplo, engadindo a liña //go:debug rsa1024min=0 ao ficheiro de proba. Novo exemplo GenerateKey ofrece unha clave de proba estándar de 2024 bits fácil de usar.

Agora é máis seguro e máis eficiente chamar Chave privada.Calculación previa para PrivateKey.Validate. O cálculo previo é agora máis rápido en presenza de parcialmente cheo Valores precalculados, por exemplo ao extraer unha clave de JSON.

O paquete agora rexeita máis chaves non válidas aínda que non se chame a Validate, e Xerar clave agora pode devolver novos erros para fontes aleatorias rotas. Campos Primes и Precalculado estruturas Chave privada agora úsanse e validan aínda que falten algúns valores. Tamén hai cambios en crypto/x509 para analizar e extraer claves RSA, que se describen a continuación.

SignPKCS1v15 и Verifica PKCS1v15 agora admite SHA-512/224, SHA-512/256 e SHA-3.

Xerar clave agora usa un método lixeiramente diferente para xerar o expoñente privado (función de Carmichael en lugar da función de Euler). As aplicacións raras que rexeneran externamente claves só a partir de números primos poden producir resultados diferentes pero compatibles.

As operacións nas claves públicas e privadas son agora ata dúas veces máis rápidas en wasm.

cripto/sha*

cripto/sutil

Nova característica ConDataIndependentTiming permite ao usuario executar unha función con funcións específicas da arquitectura habilitadas que garanten que determinadas instrucións non se modifiquen en relación ao tempo do valor dos datos. Isto pódese usar para garantir que o código escrito para executarse en tempo constante non foi optimizado por funcións a nivel de procesador para que se execute en tempo variable. Actualmente WithDataIndependentTiming usa o bit PSTATE.DIT en arm64 e non fai nada en todas as outras arquitecturas. Configurando GODEBUG dataindependenttiming=1 activa o modo DIT para todo o programa Go.

Saída XORBytes debe solaparse completamente ou nada coa entrada. Anteriormente o comportamento non estaba definido doutro xeito, mentres que agora XORBytes entrará en pánico.

cripto/tls

O servidor TLS agora admite Encrypted Client Hello (ECH). Esta función pódese activar enchendo o campo. Config.EncryptedClientHelloKeys.

Un novo mecanismo de intercambio de claves poscuánticos X25519MLKEM768 agora compatible e activado por defecto cando Config.CurvePreferences é nulo. Configurando GODEBUG tlsmlkem=0 devolve o valor predeterminado.

Eliminouse a compatibilidade co intercambio de chaves experimental X25519Kyber768Draft00.

A orde de intercambio de claves agora é xestionada integramente polo paquete crypto/tls. Orde Config.CurvePreferences agora ignórase e os contidos só se usan para determinar cales intercambios de clave hai que incluír cando se enche o campo.

Campo novo ClientHelloInfo.Extensions Lista a lista de identificadores de extensión recibidos na mensaxe de Ola do cliente. Isto pode ser útil para a impresión dixital de clientes TLS.

crypto/x509

Configurando GODEBUG Eliminouse x509sha1. Certificación.Verificar xa non admite sinaturas baseadas en SHA-1.

OID agora implementa interfaces codificación.binaryappender и codificación.TextAppender.

O campo da política de certificados predeterminado cambiouse de Certificado.Identificadores da política en Certificado.Políticas. Ao analizar certificados, encheranse ambos os campos, pero ao crear unha política de certificados, tomaranse do campo Certificado.Políticas en lugar de Certificado.Identificadores de políticas. Este cambio pódese revertir. Configuración de GODEBUG x509usepolicies=0.

Crear certificado agora xerará un número de serie mediante un método compatible con RFC 5280 ao pasar un campo de modelo Certificado.Número de serie cero, en vez de fallar.

Certificado.Verificar agora admite a validación de políticas segundo se define en RFC 5280 e RFC 9618. Novo campo VerifyOptions.CertificatePolicies pódese configurar nun conxunto aceptable de políticas OID. Só se devolverán cadeas de certificados con gráficos de políticas válidos Certificado.Verificar.

MarshalPKCS8PrivateKey agora devolve un erro en lugar de recuperar unha clave RSA non válida. (MarshalPKCS1PrivateKey non ten ningún erro e o seu comportamento cando se proporcionan chaves non válidas permanece sen definir.)

ParsePKCS1PrivateKey и ParsePKCS8PrivateKey agora usa e valida os valores CRT codificados, polo que pode rexeitar claves RSA non válidas que se aceptaron anteriormente. Uso Configuración de GODEBUG x509rsacrt=0 volve ao recálculo dos valores CRT.

depurar/elfo

Paquete depurar/elfo Engade compatibilidade para xestionar versións de símbolos en ficheiros dinámicos ELF (Formato executable e vinculable). Novo método Ficheiro.DynamicVersions Devolve unha lista de versións dinámicas definidas nun ficheiro ELF. Novo método File.DynamicVersionNeeds Devolve unha lista de versións dinámicas requiridas por este ficheiro ELF que se definen noutros obxectos ELF. En fin, novos campos Símbolo.TenVersión и Símbolo.Índice de versións indica a versión do símbolo.

codificación

Dúas novas interfaces TextAppender и BinaryAppender introducíronse para engadir un texto ou representación binaria dun obxecto a unha porción de bytes. Estas interfaces proporcionan a mesma funcionalidade que TextMarshaler и BinaryMarshaler, pero en lugar de asignar unha nova porción cada vez, engaden datos directamente a unha porción existente. Estas interfaces están implementadas actualmente por tipos de biblioteca estándar que xa implementan TextMarshaler e/ou BinaryMarshaler.

codificación/json

Ao construír, omitirase un campo de estrutura coa nova opción omitcero na etiqueta de campo de estrutura se o seu valor é cero. Se o tipo de campo ten un método bool IsZero(), utilizarase para determinar se o valor é cero. En caso contrario, o valor será cero valor nulo para o seu tipo. A etiqueta de campo omitzero é máis limpa e menos propensa a erros que omitempty cando a intención é omitir valores nulos. En particular, a diferenza de omitempty, omitcero omite ceros tempo.tempo valores, que é unha fonte común de problemas.

Se se especifican tanto omitempty como omitzero, o campo omitirase se o valor está baleiro ou cero (ou ambos).

UnmarshalTypeError.Field agora inclúe estruturas integradas para proporcionar mensaxes de erro máis detalladas.

ir/tipos

Todas as estruturas de datos go/types que expoñen secuencias de pares de métodos, como Len() int e At(int) T, agora tamén teñen métodos que devolven iteradores, o que permite un código máis sinxelo coma este:

params := fn.Type.(*types.Signature).Params() for i := 0; i < params.Len(); i++ { use(params.At(i)) }

Sobre este:

for param := rango fn.Signature().Params().Variables() {use(param) }

Métodos: Interface.EmbeddedTypes Interface.Métodos explícitos Interface.Métodos MethodSet.Métodos Nomeado.Métodos Ámbito.Nenos Estrutura.Campos Tupla.Variables TypeList.Types TypeParamList.TypeParams Unión.Condicións

hash/*

rexistro/slog

Novo DisardHandler é un manejador que nunca está habilitado e sempre descarta a súa saída.

Nivel и LevelVar agora implementa a interface codificación.TextAppender.

matemáticas/*

net

ListenCondig agora usa MPTCP de forma predeterminada nos sistemas nos que é compatible (actualmente só Linux).

IP agora implementa a interface codificación.TextAppender.

net/http

A restrición cambiou transporte ás respostas de información 1xx recibidas en resposta á solicitude. Anteriormente, isto pararía a solicitude e devolvía un erro despois de recibir máis de 5 respostas 1xx. Agora só devolve un erro se o tamaño total de todas as respostas 1xx supera a configuración de configuración Transport.MaxResponseHeaderBytes.

Ademais, cando unha solicitude ten un gancho de seguimento net/http/httptrace.ClientTrace.Got1xxResponse, agora non hai límite no número total de respostas 1xx. O gancho Got1xxResponse pode devolver un erro para deter a solicitude.

transporte и servidor agora ten un campo HTTP2 que permite configurar os axustes do protocolo HTTP/2.

Novos campos Servidor.Protocolos и Transporte.Protocolos proporcionar un xeito sinxelo de configurar que protocolos HTTP utiliza o servidor ou o cliente.

O servidor e o cliente pódense configurar para admitir conexións HTTP/2 sen cifrar.

Cando Servidor.Protocolos contén UnencrypterHTTP2, o servidor aceptará conexións HTTP/2 en portos sen cifrar. O servidor pode aceptar HTTP/1 e HTTP/2 sen cifrar no mesmo porto.

Cando Transporte.Protocolos contén HTTP/2 sen cifrar e non contén HTTP1, o transporte usará HTTP/2 sen cifrar para os enderezos http://. Se un transporte está configurado para usar HTTP/1 e HTTP/2 sen cifrar, utilizará HTTP/1.

A compatibilidade con HTTP/2 sen cifrar usa "HTTP/2 con aprendizaxe avanzada" (RFC 9113, sección 3.3). Non se admite a cabeceira obsoleta "Actualizar: h2c".

net/netip

Addr, AdrPort и Prefixo agora implementar interfaces codificación.binaryappender и codificación.TextAppender.

net/url

URL agora tamén implementa a interface codificación.binaryappender.

os/usuario

En Windows actual agora pódese usar en Windows Nano Server. A implementación actualizouse para evitar o uso de funcións da biblioteca NetApi32, que falta en Nano Server.

En Windows actual, Buscar и LookupId agora admite as seguintes contas de servizo de usuario integradas:

  • NT AUTORIDADE DE SISTEMA
  • NT AUTORIDADE SERVIZO LOCAL
  • SERVIZO DE AUTORITYNETWORK NT

En Windows actual acelerouse significativamente cando o usuario actual se une a un dominio lento, que é un caso común para moitos usuarios corporativos. O rendemento da nova implementación está agora na orde de milisegundos, en comparación coa implementación anterior, que pode tardar varios segundos, incluso minutos, en completarse.

En Windows actual agora devolve o usuario propietario do proceso cando o fío actual suplanta a identidade doutro usuario. Anteriormente, isto devolveu un erro.

expresión regular

Rex agora implementa a interface codificación.Adaptador de texto.

tempo de execución

Función GOROOT agora está en desuso. En ambientes máis novos, debería preferir usar a ruta do sistema para definir o binario "go" e usar go env GOROOT para definir GOROOT.

cordas

Paquete cordas engade varias funcións para traballar con iteradores:

  • Liñas Devolve un iterador sobre liñas separadas por novas liñas nunha cadea.
  • DividirSeq devolve un iterador sobre todas as subcadeas dunha cadea separadas por un separador.
  • SplitAfterSeq devolve un iterador sobre as subcadeas dunha cadea, dividido despois de cada aparición do separador.
  • CamposSeq devolve un iterador sobre subcadeas dunha cadea arredor de secuencias de caracteres de espazos en branco, tal e como se defineunicode.IsSpace
  • CamposFuncSeq Devolve un iterador sobre subcadeas de cadea arredor de secuencias de puntos de código Unicode que satisfacen un predicado.

sincronizar

Implantación sincronizar.mapa cambiouse para mellorar o rendemento, especialmente para os cambios no dicionario. Por exemplo, a disputa de cambios de conxuntos disxuntos é menos probable nos dicionarios grandes e xa non require tempo de acumulación para conseguir unha baixa carga de dicionario de conflitos.

Se atopas algún problema, configura GOEXPERIMENT=nosynchashtriemap durante a compilación para volver á implementación antiga e por favor enche o formulario do problema.

probas

Novos métodos T.Contexto и B.Contexto devolve un contexto que se descarta despois de que se complete a proba e antes de que se executen as funcións de limpeza da proba.

Novos métodos T.Chdir и B.Chdir pódese usar para cambiar o directorio de traballo durante a duración dunha proba ou benchmark.

texto/modelo

Os modelos agora admiten range-over-func e range-over-int.

tempo

Tempo agora implementa interfaces codificación.binaryappender и codificación.TextAppender.

portas

Linux

Como foi anunciou Segundo as notas de lanzamento de Go 1.23, Go 1.24 require a versión 3.2 ou posterior do núcleo de Linux.

Darwin

Go 1.24 é a última versión que se executará en macOS 11 Big Sur. Go 1.25 necesitará macOS 12 Monterey ou posterior.

montaxe web

A directiva do compilador go:wasmexport engadiuse aos programas Go para exportar funcións ao servidor WebAssembly.

En WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm), Go 1.24 admite a creación dun programa Go como reactor/biblioteca especificando a marca de compilación -buildmode=c-shared.

Agora permítense máis tipos como argumentos ou resultados para as funcións go:wasmimport. En particular, permítense bool, string, uintptr e punteiros a certos tipos (ver detalles en documentación), xunto cos tipos enteiros e de coma flotante de 32 e 64 bits e unsafe.Pointer, que xa están permitidos. Estes tipos tamén se permiten como tipos de argumento ou de resultado para as funcións go:wasmexport.

Os ficheiros de soporte para WebAssembly movéronse a lib/wasm de misc/wasm.

A pegada de memoria inicial redúcese significativamente, especialmente para pequenas aplicacións WebAssembly.

Windows

O porto de Windows/Arm de 32 bits (GOOS=windows GOARCH=arm) marcouse como roto. Detalles en # 70705

Fonte: linux.org.ru

Engadir un comentario