Стандартная библиотека Nim
Библиотека Nim разделена на чистые библиотеки, нечистые библиотеки и обертки.
Чистые библиотеки не зависят от каких-либо внешних *.dll или lib*.so бинарных файлов, в то время как нечистые библиотеки зависят. Обертка — это нечистая библиотека, представляющая собой интерфейс очень низкого уровня к библиотеке C.
Прочитайте этот документ для быстрого обзора дизайна API.
Nimble
Стандартная библиотека Nim охватывает только основы, ознакомьтесь со списком сторонних пакетов на https://nimble.directory/.
Чистые библиотеки
Автоматические импорты
- system Базовые процедуры и операторы, необходимые каждому программисту. Также предоставляет средства ввода-вывода для чтения и записи текстовых и бинарных файлов. Импортируется неявно компилятором. Не импортируйте его напрямую. Он полагается на магию компилятора для работы.
-
threads Базовая поддержка потоков Nim. Примечание: Это часть модуля system. Не импортируйте его явно. Включено с помощью
--threads:on. -
channels Поддержка передачи сообщений Nim для потоков. Примечание: Это часть модуля system. Не импортируйте его явно. Включено с помощью
--threads:on.
Основные
- bitops Предоставляет ряд методов низкого уровня для манипулирования битами.
- cpuinfo Этот модуль реализует процедуры для определения количества ЦП/ядер.
- endians Этот модуль содержит вспомогательные функции, которые работают с различными порядками байтов.
- lenientops Предоставляет бинарные операторы для смешанных целочисленных/вещественных выражений для удобства.
- locks Мьютексы и условные переменные для Nim.
- macros Содержит API AST и документацию Nim для написания макросов.
- rlocks Перезаписываемые мьютексы для Nim.
- typeinfo Предоставляет (небезопасный) доступ к информации о типе Nim во время выполнения.
- typetraits Этот модуль определяет процедуры времени компиляции для рефлексии типов.
- volatile Этот модуль содержит код для генерации левых и правых volatile загрузок и сохранений, что полезно в программировании встраиваемых систем и системном программировании.
Алгоритмы
- algorithm Этот модуль реализует некоторые общие алгоритмы общего назначения, такие как сортировка или бинарный поиск.
- sequtils Этот модуль реализует операции для встроенного типа seq, вдохновленного функциональными языками программирования.
Коллекции
- critbits Этот модуль реализует дерево критических битов, которое является эффективной структурой данных для упорядоченного множества строк или упорядоченного отображения строк.
-
deques Реализация двусторонней очереди. Базовая реализация использует
seq. - heapqueue Реализация структуры данных кучи, которая может использоваться в качестве очереди с приоритетами.
- intsets Эффективная реализация множества целых чисел как разреженного набора битов.
- lists Поддержка связанных списков Nim. Содержит односвязные и двусвязные списки, а также циклические списки («кольца»).
- options Тип option инкапсулирует необязательное значение.
- sets Поддержка хэш-множеств и битовых множеств Nim.
- sharedlist Поддержка общих связанных списков Nim. Содержит общий односвязный список.
- sharedtables Поддержка общих хэш-таблиц Nim. Содержит общие таблицы.
- tables Поддержка хэш-таблиц Nim. Содержит таблицы, упорядоченные таблицы и таблицы подсчета.
Обработка строк
-
cstrutils Служебные программы для
cstringобработки. - std/editdistance Этот модуль содержит алгоритм для вычисления расстояния редактирования между двумя строками Юникода.
-
encodings Преобразование между различными кодировками символов. В UNIX это используется библиотека
iconv, в Windows — API Windows. - parseutils Этот модуль содержит вспомогательные функции для разбора токенов, чисел, идентификаторов и т. д.
- pegs Этот модуль содержит процедуры и операторы для обработки PEGs.
- punycode Реализует представление Юникода с ограниченным набором символов ASCII.
- ropes Этот модуль содержит поддержку типа данных веревка. Веревки могут эффективно представлять очень длинные строки; особенно конкатенация выполняется в O(1), а не в O(n).
-
strformat Макрос, основанный на стандартной интерполяции/форматировании строк. Вдохновлен строками
fPython. - strmisc Этот модуль содержит редкие операции обработки строк, которые не вписываются в стандартные операции в strutils.
-
strscans Этот модуль содержит
scanfмакрос для удобного разбора мини-языков. -
strtabs Модуль
strtabsреализует эффективную хэш-таблицу, которая представляет собой отображение строк на строки. Поддерживает регистронезависимые, регистрозависимые и стилистически независимые режимы. - strutils Этот модуль содержит общие операции обработки строк, такие как изменение регистра строки, разделение строки на подстроки, поиск подстрок, замена подстрок.
- unicode Этот модуль предоставляет поддержку обработки кодировки Unicode UTF-8.
- unidecode Он предоставляет единственную процедуру, которая выполняет транслитерацию Юникода в ASCII. Основано на модуле Unidecode Python.
- std/wordwrap Этот модуль содержит алгоритм для обрезки слов в строке Юникода.
Обработка времени
-
std/monotimes Модуль
monotimesреализует монотонные метки времени. -
times Модуль
timesсодержит поддержку работы со временем.
Общие службы операционной системы
- distros Этот модуль реализует основы для обнаружения дистрибутива ОС («дистрибутива») и родного менеджера пакетов ОС. Его основная цель — создание вывода для пакетов Nimble, но он также содержит широко используемый перечисление Distribution, которое полезно для написания платформозависимого кода. См. packaging для получения советов по распространению Nim с помощью пакетов ОС.
- dynlib Этот модуль реализует возможность доступа к символам из динамических библиотек.
- marshal Содержит процедуры для сериализации и десериализации произвольных структур данных Nim.
-
memfiles Этот модуль предоставляет поддержку файлов с отображением в памяти (
mmapPosix) на разных операционных системах. - os Базовые средства операционной системы, такие как получение переменных среды, чтение аргументов командной строки, работа с каталогами, выполнение команд оболочки и т. д.
-
osproc Модуль для межпроцессного взаимодействия за пределами
os.execShellCmd. -
streams Этот модуль предоставляет интерфейс потока и две его реализации:
FileStreamиStringStream, которые реализуют интерфейс потока для объектов файлов Nim (File) и строк. Другие модули могут предоставить другие реализации для этого стандартного интерфейса потоков. - terminal Этот модуль содержит несколько процедур для управления терминалом (также называемым консолью). Реализация просто использует последовательности ANSI escape и не зависит ни от какого другого модуля.
Библиотеки математических функций
- complex Этот модуль реализует комплексные числа и соответствующие математические операции.
- fenv Окружение с плавающей точкой. Обработка округления и исключений с плавающей точкой (переполнение, деление на ноль и т. д.).
- math Математические операции, такие как косинус, квадратный корень.
- mersenne Генератор случайных чисел Mersenne Twister.
- random Быстрый и компактный генератор случайных чисел.
- rationals Этот модуль реализует рациональные числа и соответствующие математические операции.
- stats Статистический анализ
- std/sums Быстрые функции суммирования.
Протоколы интернета и поддержка
- asyncdispatch Этот модуль реализует асинхронный диспетчер для операций ввода-вывода.
-
asyncfile Этот модуль реализует асинхронное чтение и запись файлов с использованием
asyncdispatch. -
asyncftpclient Этот модуль реализует асинхронный FTP-клиент, использующий модуль
asyncnet. -
asynchttpserver Этот модуль реализует асинхронный HTTP-сервер, использующий модуль
asyncnet. -
asyncnet Этот модуль реализует асинхронные сокеты, основанные на модуле
asyncdispatch. -
asyncstreams Этот модуль предоставляет
FutureStream— будущее, которое действует как очередь. - cgi Этот модуль реализует вспомогательные функции для приложений CGI.
- cookies Этот модуль содержит вспомогательные процедуры для парсинга и генерации файлов cookie.
- httpclient Этот модуль реализует простой HTTP-клиент, который поддерживает как синхронный, так и асинхронный запрос веб-страниц.
- mimetypes Этот модуль реализует базу данных mimetypes.
- nativesockets Этот модуль реализует низкоуровневый API сокетов.
-
net Этот модуль реализует высокоуровневый API сокетов. Он заменяет модуль
sockets. - selectors Этот модуль реализует интерфейс селектора с бэкендами, специфичными для каждой ОС. В настоящее время epoll в Linux и select в других операционных системах.
- smtp Этот модуль реализует простой SMTP-клиент.
- uri Этот модуль предоставляет функции для работы с URI.
Потоки
- threadpool Реализует spawn Nim.
Парсеры
- htmlparser Этот модуль анализирует документ HTML и создает его представление в виде XML-дерева.
- json Высокопроизводительный парсер JSON.
- lexbase Это модуль низкого уровня, который реализует чрезвычайно эффективную схему буферизации для лексических анализаторов и парсеров. Он используется различными модулями парсинга.
-
parsecfg Модуль
parsecfgреализует высокопроизводительный парсер конфигурационных файлов. Синтаксис конфигурационного файла похож на формат Windows.ini, но гораздо мощнее, поскольку это не парсер на основе строк. Поддерживаются строковые литералы, сырые строковые литералы и строковые литералы с тройными кавычками, как в языке программирования Nim. -
parsecsv Модуль
parsecsvреализует простой высокопроизводительный парсер CSV. -
parseopt Модуль
parseoptреализует парсер командной строки. -
parsesql Модуль
parsesqlреализует простой высокопроизводительный парсер SQL. -
parsexml Модуль
parsexmlреализует простой высокопроизводительный XML/HTML-парсер. Поддерживается только кодировка UTF-8. Парсер разработан таким образом, чтобы обеспечивать некоторую коррекцию ошибок, поэтому он может анализировать даже некий "дикий HTML", встречающийся в Интернете.
Документация
- 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-дерева.
Генераторы
- htmlgen Этот модуль реализует простой генератор XML и HTML-кода. Для каждого используемого HTML-тега есть соответствующий макрос, который генерирует строку с его HTML-представлением.
Хэширование
- base64 Этот модуль реализует кодировщик и декодировщик base64.
- hashes Этот модуль реализует эффективные вычисления хэш-значений для различных типов Nim.
- md5 Этот модуль реализует алгоритм проверки MD5.
- oids OID — это глобальный идентификатор, состоящий из метки времени, уникального счетчика и случайного значения. Это сочетание должно быть достаточным для создания уникального глобально распределенного идентификатора. Эта реализация была извлечена из интерфейса Mongodb, и, следовательно, она бинарно совместима с Mongo OID.
- std/sha1 Этот модуль реализует кодировщик и декодировщик sha1.
Разное
- browsers Этот модуль реализует процедуры для открытия URL-адресов в браузере по умолчанию пользователя.
- colors Этот модуль реализует обработку цвета для Nim.
- coro Этот модуль реализует экспериментальные сопрограммы в Nim.
- logging Этот модуль реализует простой логировщик.
-
segfaults Преобразует нарушения доступа или ошибки segfault в исключение
NilAccessDefect. - sugar Этот модуль реализует удобный синтаксический сахар на основе системы макросов Nim.
- unittest Реализует DSL для модульного тестирования.
- std/varints Декодирует целые числа переменной длины, совместимые с SQLite.
Модули для JS-бекенда
- asyncjs Типы и макросы для написания асинхронных процедур на JavaScript.
- dom Объявление Document Object Model для JS-бекенда.
-
jsconsole Обёртка для объекта
console. -
jscore Обёртка основных функций JavaScript. Для большинства целей следует использовать модули
math,json, иtimesстандартной библиотеки вместо этого модуля. - jsffi Типы и макросы для более удобного взаимодействия с JavaScript.
Нечистые библиотеки
Регулярные выражения
- re Этот модуль содержит процедуры и операторы для работы с регулярными выражениями. Текущая реализация использует PCRE.
Поддержка баз данных
- db_postgres Обёртка на более высоком уровне для PostgreSQL. Аналогичный интерфейс реализован и для других баз данных.
- db_mysql Обёртка на более высоком уровне для MySQL. Аналогичный интерфейс реализован и для других баз данных.
- db_sqlite Обёртка на более высоком уровне для SQLite. Аналогичный интерфейс реализован и для других баз данных.
Обёртки
Сгенерированный HTML для некоторых из этих обёртки настолько велик, что не входит в дистрибутив. Вы можете найти их на веб-сайте.
Специфичные для Windows
Специфичные для UNIX
- posix Содержит обёртку для стандарта POSIX.
- posix_utils Содержит вспомогательные функции для стандарта POSIX или специализированные для Linux и BSD.
Регулярные выражения
- pcre Обёртка для библиотеки PCRE.
Библиотеки графического интерфейса
- iup Обёртка библиотеки графического интерфейса IUP.
Поддержка баз данных
- postgres Содержит обёртку для API PostgreSQL.
- mysql Содержит обёртку для API MySQL.
- sqlite3 Содержит обёртку для API SQLite 3.
- odbcsql Интерфейс к драйверу ODBC.
Программирование сетей и интернет-протоколы
- openssl Обёртка для OpenSSL.
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/lib.html