Spec-Zone.ru › Nim 1

Стандартная библиотека 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 Макрос, основанный на стандартной интерполяции/форматировании строк. Вдохновлен строками f Python.
  • 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 Этот модуль предоставляет поддержку файлов с отображением в памяти (mmap Posix) на разных операционных системах.
  • 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

  • winlean Содержит обёртку для небольшого подмножества Win32 API.
  • registry Поддержка реестра 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

Spec-Zone.ru

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