TG Telegram Group & Channel
Go Update | United States America (US)
Create: Update:

proposal: math/rand/v2 — первый v2 пакет в стандартной библиотеке

Расс Кокс предлагает добавить в std новый пакет, который должен стать заменой существующему math/rand.

Его ключевые особенности:
— Уберут метод Rand.Read и функцию Read. Аргументируют тем, что использование псевдослучайных чисел для генерации последовательностей из байт это почти всегда плохая идея. Более того, очень часто IDE подхватывает math/rand.Read когда должен подхватить crypto/rand.Read.
— Уберут Source.Seed, Rand.Seed, и функцию Seed. Глобальный Seed и так deprecated начиная с Go 1.20, а Source.Seed, Rand.Seed подразумевают, что зерно всегда имеет тип int64, что не всех случаях так. Плюс отсутствие функции Seed приведет к тому, что общий генератор случайных чисел будет всегда проинициализирован самим Go. Это позволит безболезненно менять алгоритм генерации случайных чисел глобальными функциями, не ломая обратную совместимость.
— У Source интерфейса изменят сигнатуру метода с Int63() int64 на Uint64() uint64. По этой же причине уберут интерфейс Source64.
— Будут проведены различные оптимизации существующих методов.
— Добавят дженерик функцию аля rand.N[V Number](v V) которая позволит легче работать с своими типами. Как пример: rand.N(1*time.Minute) где возвращаемое не нужно будет приводить к time.Duration.
— Новая реализация Source — PCG-DXSM, генератор который и быстрее и занимает меньше памяти. Судя по предварительному API состояние генератора можно будет сохранять и восстанавливать из слайса байт.

Главная мотивация, кроме улучшения самого генератора, это показать как именно v2 пакеты должны в будущем выглядеть в стандартной библиотеке. Как с ними должен будет работать тулинг и средства документации. Расс утверждает, что это будет хорошая подготовка перед началом работы над возможными sync/v2 и encoding/json/v2. Во вторых v2 позволяют показать преемственность пакетов и тот факт, что это не дизайн API с нуля, а набор изменений оригинального дизайна, где каждое изменение имеет под собой большое число факторов в свою пользу.

proposal: math/rand/v2 — первый v2 пакет в стандартной библиотеке

Расс Кокс предлагает добавить в std новый пакет, который должен стать заменой существующему math/rand.

Его ключевые особенности:
— Уберут метод Rand.Read и функцию Read. Аргументируют тем, что использование псевдослучайных чисел для генерации последовательностей из байт это почти всегда плохая идея. Более того, очень часто IDE подхватывает math/rand.Read когда должен подхватить crypto/rand.Read.
— Уберут Source.Seed, Rand.Seed, и функцию Seed. Глобальный Seed и так deprecated начиная с Go 1.20, а Source.Seed, Rand.Seed подразумевают, что зерно всегда имеет тип int64, что не всех случаях так. Плюс отсутствие функции Seed приведет к тому, что общий генератор случайных чисел будет всегда проинициализирован самим Go. Это позволит безболезненно менять алгоритм генерации случайных чисел глобальными функциями, не ломая обратную совместимость.
— У Source интерфейса изменят сигнатуру метода с Int63() int64 на Uint64() uint64. По этой же причине уберут интерфейс Source64.
— Будут проведены различные оптимизации существующих методов.
— Добавят дженерик функцию аля rand.N[V Number](v V) которая позволит легче работать с своими типами. Как пример: rand.N(1*time.Minute) где возвращаемое не нужно будет приводить к time.Duration.
— Новая реализация Source — PCG-DXSM, генератор который и быстрее и занимает меньше памяти. Судя по предварительному API состояние генератора можно будет сохранять и восстанавливать из слайса байт.

Главная мотивация, кроме улучшения самого генератора, это показать как именно v2 пакеты должны в будущем выглядеть в стандартной библиотеке. Как с ними должен будет работать тулинг и средства документации. Расс утверждает, что это будет хорошая подготовка перед началом работы над возможными sync/v2 и encoding/json/v2. Во вторых v2 позволяют показать преемственность пакетов и тот факт, что это не дизайн API с нуля, а набор изменений оригинального дизайна, где каждое изменение имеет под собой большое число факторов в свою пользу.


>>Click here to continue<<

Go Update




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)