Стандартная библиотека 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 Поддержка файлов с отображением в память (
mmapPosix) на разных операционных системах. - 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реализует высокопроизводительный парсер конфигурационных файлов. Синтаксис конфигурационного файла аналогичен формату.iniWindows, но гораздо мощнее, так как это не парсер на основе строк. Поддерживаются строковые литералы, необработанные строковые литералы и строковые литералы с тройными кавычками, как и в языке программирования 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.
-
Многие вспомогательные функции для обработки регулярных выражений. Текущая реализация использует PCRE.
Поддержка баз данных
- db_mysql Обёртка для базы данных MySQL более высокого уровня. Тот же интерфейс реализован и для других баз данных.
- db_odbc Обёртка для базы данных ODBC более высокого уровня. Тот же интерфейс реализован и для других баз данных.
- db_postgres Обёртка для базы данных PostgreSQL более высокого уровня. Тот же интерфейс реализован и для других баз данных.
- db_sqlite Обёртка для базы данных SQLite более высокого уровня. Тот же интерфейс реализован и для других баз данных.
Общие сервисы операционной системы
- rdstdin Код для чтения пользовательского ввода из stdin.
Обёртки
Сгенерированный HTML для некоторых из этих обёрток настолько велик, что не входит в дистрибутив. Вы можете найти их на сайте.
Специфичные для 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