Spec-Zone.ru › Nim

Стандартная библиотека Nim

Исходный кодИзменить

Библиотека Nim разделена на чистые библиотеки, нечистые библиотеки и обёртки.

Чистые библиотеки не зависят от каких-либо внешних *.dll или lib*.so бинарных файлов, тогда как нечистые библиотеки зависят.

Обёртка — это нечистая библиотека, являющаяся низкоуровневым интерфейсом к библиотеке C.

Прочитайте этот документ для краткого обзора проектирования API.

Nimble

Стандартная библиотека Nim охватывает только основы. Просмотрите https://nimble.directory/ для списка пакетов сторонних разработчиков.

Чистые библиотеки

Автоматические импорты

  • system Основные процедуры и операторы, необходимые каждой программе. Также предоставляет средства ввода-вывода для чтения и записи текстовых и двоичных файлов. Импортируется компилятором неявно. Не импортируйте её напрямую. Она использует магию компилятора для работы.

Ядро

  • atomics Типы и операции для атомарных операций и алгоритмов без блокировок.
  • bitops Предоставляет ряд низкоуровневых методов для манипулирования битами.
  • compilesettings Получение информации о различных настройках конфигурации компилятора из кода.
  • cpuinfo Процедуры для определения количества процессоров/ядер.
  • effecttraits Доступ к вычисленным эффектам .raises для системы макросов Nim.
  • endians Помощники для работы с различными порядками байтов.
  • locks Блокировки и условные переменные для Nim.
  • macrocache Предоставляет API для макросов для сбора информации о времени компиляции по модулям.
  • macros Содержит API AST и документацию Nim для написания макросов.
  • rlocks Рекурсивные блокировки для Nim.
  • typeinfo Предоставляет (небезопасный) доступ к информации о типе Nim во время выполнения.
  • typetraits Процедуры рефлексии времени компиляции для работы с типами.
  • volatile Код для генерации операций volatile load и store, полезных в программировании для встраиваемых систем и системного программирования.

Алгоритмы

  • algorithm Некоторые общие обобщённые алгоритмы, такие как сортировка или двоичный поиск.
  • enumutils Дополнительные возможности для встроенного типа enum.
  • sequtils Операции для встроенного типа seq, вдохновлённые функциональными языками программирования.
  • setutils Дополнительные возможности для встроенного типа set.

Коллекции

  • critbits Дерево критических битов, являющееся эффективным контейнером для отсортированного набора строк или отсортированного отображения строк.
  • deques Реализация двусторонней очереди. Внутренняя реализация использует seq.
  • heapqueue Реализация двоичной кучи, которая может быть использована в качестве очереди с приоритетом.
  • intsets Эффективная реализация множества целых чисел как разреженного битового набора.
  • lists Поддержка связанных списков Nim. Содержит односвязные и двусвязные списки и циклические списки ("кольца").
  • options Тип option инкапсулирует необязательное значение.
  • packedsets Эффективная реализация множества порядковых чисел как разреженного битового набора.
  • ropes Тип данных rope. Ropes могут эффективно представлять очень длинные строки; в частности, конкатенация выполняется за O(1), а не за O(n).
  • sets Поддержка множеств хэш-таблиц Nim.
  • strtabs Модуль strtabs реализует эффективную хэш-таблицу, которая является отображением строк на строки. Поддерживает регистрозависимый, регистронезависимый и стилонезависимый режимы.
  • tables Поддержка хэш-таблиц Nim. Содержит таблицы, упорядоченные таблицы и таблицы подсчёта.

Обработка строк

  • cstrutils Утилиты для обработки cstring.
  • editdistance Алгоритм для вычисления расстояния редактирования между двумя строками Юникода.
  • encodings Преобразование между различными кодировками символов. В UNIX это использует библиотеку iconv, в Windows — API Windows.
  • formatfloat Форматирование чисел с плавающей точкой как строк.
  • objectdollar Универсальный оператор $ для преобразования объектов в строки.
  • punycode Реализует представление Юникода с ограниченным набором ASCII-символов.
  • strbasics Некоторые высокопроизводительные операции со строками.
  • strformat Макрос основанная стандартная интерполяция/форматирование строк. Вдохновлена f-строками Python. Примечание: если вам нужна шаблонизация, используйте фильтры кода Nim Source Code Filters (SCF).
  • strmisc Редкие операции с строками, не вписывающиеся в обычно используемые операции в strutils.
  • strscans Макрос scanf для удобного разбора мини-языков.
  • strutils Общие операции с строками, такие как изменение регистра строки, разделение строки на подстроки, поиск подстрок, замена подстрок.
  • unicode Поддержка работы с кодировкой Юникод UTF-8.
  • unidecode Предоставляет одну процедуру, которая выполняет транслитерацию Юникода в ASCII. Основано на модуле Unidecode Python.
  • widestrs Поддержка Nim для широких строк C/C++.
  • wordwrap Алгоритм для обрезки строк Юникода по словам.

Обработка времени

  • monotimes Модуль monotimes реализует монотонные метки времени.
  • times Модуль times содержит поддержку работы со временем.

Общие службы операционной системы

  • appdirs Помощники для определения специальных каталогов, используемых приложениями.
  • cmdline Системные средства для чтения параметров командной строки.
  • dirs Обработка каталогов.
  • distros Основы для определения дистрибутива ОС ("дистрибутива") и собственного менеджера пакетов ОС. Основное назначение — выводить данные для пакетов Nimble, но также содержит широко используемый перечисление **Distribution**, полезное для написания платформозависимого кода. См. packaging для советов по распространению Nim с использованием пакетов ОС.
  • dynlib Доступ к символам из динамических библиотек.
  • envvars Обработка переменных среды.
  • exitprocs Добавление хуков к выходу программы.
  • files Обработка файлов.
  • memfiles Поддержка файлов с отображением в память (mmap Posix) на разных операционных системах.
  • os Основные средства операционной системы, такие как извлечение переменных среды, чтение аргументов командной строки, работа с каталогами, выполнение команд оболочки и т.д.
  • oserrors Сообщения об ошибках ОС.
  • osproc Модуль для межпроцессного взаимодействия, выходящего за рамки os.execShellCmd.
  • paths Обработка путей.
  • reservedmem Утилиты для резервирования частей адресного пространства программы без использования физической памяти.
  • streams Интерфейс потока и две его реализации: FileStream и StringStream, которые реализуют интерфейс потока для объектов файлов Nim (File) и строк. Другие модули могут предоставлять другие реализации для этого стандартного интерфейса потока.
  • symlinks Обработка символических ссылок.
  • syncio Различные синхронизированные операции ввода-вывода.
  • terminal Модуль для управления выводом в терминал (также называется консолью).
  • tempfiles Некоторые утилиты для генерации временных имён путей и создания временных файлов и каталогов.

Математические библиотеки

  • complex Комплексные числа и соответствующие математические операции.
  • fenv Окружение чисел с плавающей точкой. Обработка округления чисел с плавающей точкой и исключений (переполнение, деление на ноль и т. д.).
  • lenientops Бинарные операторы для смешанных целочисленных/вещественных выражений для удобства.
  • math Математические операции, такие как косинус, квадратный корень.
  • random Быстрый и небольшой генератор случайных чисел.
  • rationals Рациональные числа и соответствующие математические операции.
  • stats Статистический анализ.
  • sysrand Криптографически безопасный генератор псевдослучайных чисел.

Протоколы Интернета и поддержка

  • async Экспортирует asyncmacro и asyncfutures для нативных бэкэндов, и asyncjs для бэкэнда JS.
  • asyncdispatch Асинхронный диспетчер для операций ввода-вывода.
  • asyncfile Асинхронное чтение и запись файлов с использованием asyncdispatch.
  • asyncftpclient Асинхронный FTP-клиент, использующий модуль asyncnet.
  • asynchttpserver Асинхронный HTTP-сервер, использующий модуль asyncnet.
  • asyncmacro async и multisync макросы для asyncdispatch.
  • asyncnet Асинхронные сокеты, основанные на модуле asyncdispatch.
  • asyncstreams FutureStream — будущая функция, которая работает как очередь.
  • cgi Помощники для CGI-приложений.
  • cookies Помощниковые процедуры для парсинга и генерации файлов cookie.
  • httpclient Простой HTTP-клиент с поддержкой синхронного и асинхронного получения веб-страниц.
  • mimetypes База данных типов MIME.
  • nativesockets API сокетов низкого уровня.
  • net API сокетов высокого уровня.
  • selectors API селектора с бэкендами, специфичными для каждой ОС. Поддерживаемые примитивы ОС: epoll, kqueue, poll, и select в Windows.
  • smtp Простой SMTP-клиент с поддержкой синхронной и асинхронной работы.
  • socketstreams Реализация интерфейса потоков для сокетов.
  • uri Функции для работы с URI и URL.

Потоки

  • isolation Тип Isolated[T] для безопасного создания изолированных подграфов, которые могут эффективно передаваться в различные каналы и потоки.
  • tasks Основные примитивы для создания параллельных программ.
  • threadpool Реализует spawn из Nim.
  • typedthreads Базовая поддержка потоков в Nim.

Парсеры

  • htmlparser Парсер HTML-документов, создающий представление XML-дерева.
  • json Высокопроизводительный парсер JSON.
  • lexbase Модуль низкого уровня, реализующий чрезвычайно эффективный механизм буферизации для лексических анализаторов и парсеров. Используется различными парсерными модулями.
  • parsecfg Модуль parsecfg реализует высокопроизводительный парсер конфигурационных файлов. Синтаксис конфигурационного файла аналогичен формату .ini Windows, но гораздо мощнее, так как это не парсер на основе строк. Поддерживаются строковые литералы, необработанные строковые литералы и строковые литералы с тройными кавычками, как и в языке программирования Nim.
  • parsecsv Модуль parsecsv реализует простой высокопроизводительный парсер CSV.
  • parsejson Парсер JSON. Используется и экспортируется модулем json, но также может использоваться самостоятельно.
  • parseopt Модуль parseopt реализует парсер опций командной строки.
  • parsesql Модуль parsesql реализует простой высокопроизводительный парсер SQL.
  • parseutils Помощники для парсинга токенов, чисел, идентификаторов и т. д.
  • parsexml Модуль parsexml реализует простой высокопроизводительный парсер XML/HTML. Поддерживается только кодировка UTF-8. Парсер разработан для некоторой исправления ошибок, так что даже некоторый "неправильный HTML", встречающийся в сети, может быть с ним обработан.
  • pegs Процедуры и операторы для обработки PEGs.

Docutils

  • packages/docutils/highlite Подсветка исходного кода для языков программирования или разметки. В настоящее время поддерживается только несколько языков, другие могут быть добавлены. Интерфейс поддерживает один язык, вложенный в другой.
  • packages/docutils/rst Парсер reStructuredText. Реализовано большое подмножество. Также поддерживаются некоторые функции синтаксиса вики-разметки Markdown.
  • packages/docutils/rstast AST для парсера reStructuredText.
  • packages/docutils/rstgen Генератор HTML/Latex из reStructuredText.

Обработка XML

  • xmltree Простое XML-дерево. Более эффективное и простое, чем DOM. Также содержит макрос для генерации кода XML/HTML.
  • xmlparser Парсер XML-документов, создающий представление XML-дерева.

Генераторы

  • genasts Генерация AST с использованием захваченных переменных для макросов.
  • htmlgen Простой генератор кода XML и HTML. Каждый часто используемый HTML-тег имеет соответствующий макрос, который генерирует строку с его HTML-представлением.

Хэширование

  • base64 Кодировщик и декодировщик Base64.
  • hashes Эффективные вычисления хэш-значений для различных типов Nim.
  • md5 Алгоритм проверки MD5.
  • oids OID — это глобальный идентификатор, состоящий из временной метки, уникального счётчика и случайного значения. Это сочетание должно быть достаточно для создания глобально распределённого уникального идентификатора.
  • sha1 Алгоритм проверки SHA-1.

Сериализация

  • jsonutils Подключаемый (де)сериализация для произвольных типов с использованием JSON.
  • marshal Содержит процедуры для сериализации и десериализации произвольных данных Nim-структур.

Разное

  • assertions Обработка утверждений.
  • browsers Процедуры для открытия URL с помощью браузера по умолчанию пользователя.
  • colors Обработка цветов.
  • coro Экспериментальные сопрограммы в Nim.
  • decls Синтаксический сахар для некоторых объявлений.
  • enumerate enumerate синтаксический сахар, основанный на макросистеме Nim.
  • importutils Утилиты, связанные с импортом и разрешением символов.
  • logging Простой регистратор.
  • segfaults Преобразует нарушения доступа или ошибки сегментации в исключение NilAccessDefect.
  • sugar Прекрасный синтаксический сахар, основанный на макросистеме Nim.
  • unittest Реализует DSL для модульного тестирования.
  • varints Декодирование целых чисел переменной длины, совместимых с SQLite.
  • with Макрос with для лёгкого объединения функций.
  • wrapnils Позволяет безопасно оценивать выражения относительно ссылок на nil.

Модули для бэкэнда JavaScript

  • asyncjs Типы и макросы для написания асинхронных процедур на JavaScript.
  • dom Объявление Document Object Model для бэкэнда JS.
  • jsbigints Целые числа произвольной точности.
  • jsconsole Обёртка для объекта console.
  • jscore Обёртка основных функций JavaScript. Для большинства целей вам следует использовать модули math, json, и times стандартной библиотеки вместо этого модуля.
  • jsfetch Обёртка для fetch.
  • jsffi Типы и макросы для более лёгкого взаимодействия с JavaScript.
  • jsre Регулярные выражения для JavaScript.

Нечистые библиотеки

Регулярные выражения

  • re Процедуры и операторы для обработки регулярных выражений. Текущая реализация использует PCRE.
  • nre

    Многие вспомогательные функции для обработки регулярных выражений. Текущая реализация использует PCRE.

Поддержка баз данных

  • db_mysql Обёртка для базы данных MySQL более высокого уровня. Тот же интерфейс реализован и для других баз данных.
  • db_odbc Обёртка для базы данных ODBC более высокого уровня. Тот же интерфейс реализован и для других баз данных.
  • db_postgres Обёртка для базы данных PostgreSQL более высокого уровня. Тот же интерфейс реализован и для других баз данных.
  • db_sqlite Обёртка для базы данных SQLite более высокого уровня. Тот же интерфейс реализован и для других баз данных.

Общие сервисы операционной системы

  • rdstdin Код для чтения пользовательского ввода из stdin.

Обёртки

Сгенерированный HTML для некоторых из этих обёрток настолько велик, что не входит в дистрибутив. Вы можете найти их на сайте.

Специфичные для Windows

  • winlean Обёртка для небольшого подмножества Win32 API.
  • registry Поддержка реестра Windows.

Специфичные для UNIX

  • posix Обёртка для стандарта POSIX.
  • posix_utils Содержит вспомогательные средства для стандарта POSIX или специализированные для Linux и BSD.

Регулярные выражения

  • pcre Обёртка для библиотеки PCRE.

Поддержка баз данных

  • mysql Обёртка для API mySQL.
  • odbcsql интерфейс к драйверу ODBC.
  • postgres Обёртка для API PostgreSQL.
  • sqlite3 Обёртка для API SQLite 3.

Программирование сетей и интернет-протоколы

  • openssl Обёртка для OpenSSL.

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/lib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API