1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Swift-Numerics

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Swift Numerics

Swift Numerics предоставляет набор модулей, которые поддерживают численные вычисления в Swift. Эти модули можно разделить на две категории:

  • API, который слишком специализирован, чтобы входить в стандартную библиотеку, но достаточно общий, чтобы быть централизованным в одном общем пакете.
  • API, находящийся в стадии активной разработки и возможного будущего включения в стандартную библиотеку.

Между этими двумя категориями есть некоторое пересечение, и API, начинающийся с первой категории, может перейти во вторую по мере своего развития и обнаружения новых применений.

Модули Swift Numerics являются мелкозернистыми. Например, если вам нужна поддержка комплексных чисел, вы можете импортировать ComplexModule как отдельный модуль:

import ComplexModule

let z = Complex<Double>.i

Существует также верхний уровень модуля Numerics, который повторно экспортирует полный публичный интерфейс Swift Numerics:

import Numerics

// Теперь доступен весь API Swift Numerics.

Модули Swift Numerics имеют минимальные зависимости от других проектов. Текущие модули предполагают только доступность стандартных библиотек Swift и C, а также поддержку времени выполнения, предоставляемую compiler-rt.

Будущее расширение может предполагать доступность других стандартных интерфейсов, таких как BLAS (Basic Linear Algebra Subprograms) и LAPACK (Linear Algebra Package), но модули с более специализированными зависимостями (или зависимостями, недоступными на всех платформах, поддерживаемых Swift) принадлежат отдельному пакету.

Поскольку мы намерены сделать возможным включение модулей Swift Numerics в стандартную библиотеку в будущем, Swift Numerics использует ту же лицензию и рекомендации по вкладу, что и проект Swift.

Использование Swift Numerics в вашем проекте

Чтобы использовать Swift Numerics в проекте SwiftPM, выполните следующие действия:

  1. Добавьте следующую строку к зависимостям в файле Package.swift:
.package(url: "https://github.com/apple/swift-numerics", from: "1.0.0"),
  1. Добавьте Numerics как зависимость для вашей цели:
.target(name: "MyTarget", dependencies: [
  .product(name: "Numerics", package: "swift-numerics"),
  "AnotherModule"
]),
  1. Добавьте import Numerics в свой исходный код.

Стабильность источника

Пакет Swift Numerics стабилен; номера версий следуют семантическому версионированию. Публичный API пакета swift-numerics состоит из не зачёркнутых объявлений, помеченных как public или usableFromInline в модулях, повторно экспортируемых верхним уровнем модуля Numerics. Интерфейсы, не являющиеся частью публичного API, могут продолжать изменяться в любом выпуске, включая исправления.

Обратите внимание, что содержимое модулей _NumericsShims и _TestSupport, а также содержимое каталога Tests явно не является публичным API. Определения в них могут поэтому измениться по желанию, и весь модуль может быть удалён в любом новом выпуске. Если у вас есть случай использования, требующий зачёркнутые операции, пожалуйста, поднимите вопрос с просьбой сделать их публичным API.

Будущие минорные версии пакета могут вносить изменения в эти правила по мере необходимости.

Мы хотели бы, чтобы этот пакет быстро использовал улучшения языка и инструментов Swift, которые имеют отношение к его мандату. Соответственно, время от времени мы ожидаем, что новые версии этого пакета потребуют от клиентов обновления до более новой версии инструментальной цепочки Swift. Требование новой версии Swift потребует только незначительного увеличения версии.

Вклад в Swift Numerics

Swift Numerics — это отдельная библиотека, которая отделена от основного проекта Swift, но иногда она выступает в качестве плацдарма для API, которые позже будут включены в стандартную библиотеку Swift. Когда это произойдёт, такие изменения будут предложены в стандартной библиотеке Swift с использованием установленного процесса эволюции проекта Swift.

Swift Numerics использует проблемы GitHub для отслеживания ошибок и функций. Мы используем запросы на вытягивание для разработки.

Как предложить новый модуль

  1. Поднимите проблему с... ### Как предложить новую функцию для существующего модуля

  2. Создайте задачу с тегом [улучшение].

  3. Поднимите PR с вашей реализацией и обсудите её там.

  4. Как только будет достигнуто согласие, что новая функция желательна и дизайн подходит, её можно объединить.

Как исправить ошибку или внести небольшие улучшения

  1. Поднимите PR со своим изменением.
  2. Обязательно добавьте тестовое покрытие для вносимых изменений.

Форумы

Вопросы об использовании модулей Swift Numerics или проблемы, которые явно не являются ошибками, можно обсудить в разделе «Swift Numerics» на форумах Swift (https://forums.swift.org/c/related-projects/swift-numerics).

Модули

  1. RealModule (Sources/RealModule/README.md)
  2. ComplexModule (Sources/ComplexModule/README.md)
  3. IntegerUtilities (Sources/IntegerUtilities/README.md) (только на основном, ещё не представлен в выпущенном теге)

Будущее расширение

  1. Большие целые числа фиксированной ширины (https://github.com/apple/swift-numerics/issues/4)
  2. Целые числа произвольной точности (https://github.com/apple/swift-numerics/issues/5)
  3. Массивы заданной формы (https://github.com/apple/swift-numerics/issues/6)
  4. Десятичные числа с плавающей запятой (https://github.com/apple/swift-numerics/issues/7)

[Примечание 1:] Модуль называется ComplexModule вместо Complex, потому что Swift в настоящее время не может использовать полностью определённое имя для типов, когда тип и модуль имеют одно и то же имя (обсуждение здесь: https://forums.swift.org/t/pitch-fully-qualified-name-syntax/28482). Это помешало бы пользователям Swift Numerics, которым не нужны универсальные типы, делать такие вещи, как:

import Complex
// Я знаю, что мне нужен только Complex<Double>, поэтому мне не нужен универсальный параметр.
typealias Complex = Complex.Complex<Double> // Это не работает, потому что поиск имени завершается неудачно.

По этой причине модули, в которых возникает такая двусмысленность, имеют суффикс Module в Swift Numerics:

import ComplexModule
// Я знаю, что мне нужен только Complex<Double>, поэтому мне не нужен универсальный параметр.
typealias Complex = ComplexModule.Complex<Double>
// Но я всё ещё могу ссылаться на универсальный тип, если мне это иногда нужно:
let a = ComplexModule.Complex<Float>

Модуль Real не содержит типа Real, но содержит протокол Real. Пользователи могут захотеть определить свой собственный тип Real (и, возможно, повторно экспортировать модуль Real) — именно поэтому суффикс также применяется там. Новые модули должны тщательно оценить это решение, но могут ошибиться в сторону добавления суффикса. Ожидается, что большинство пользователей просто импортируют Numerics, так что это не проблема для них.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Swift Numerics — это числовой API для Swift, предназначенный для заполнения некоторых важных пробелов в существующих API стандартной библиотеки и для открытия новых областей в Swift-программировании. Расширить Свернуть
Swift и 2 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-Swift-Numerics.git
git@gitlife.ru:oschina-mirror/mirrors-Swift-Numerics.git
oschina-mirror
mirrors-Swift-Numerics
mirrors-Swift-Numerics
main