stdlib organization & documentation improvements (#20971)

* stdlib organization & documentation improvements

* fix CI

* Update doc/lib.md

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* fix ci, remove jshttpcore, export in jsfetch instead

* fix alphabetical order violations

* add cmdline, db_odbc

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>
This commit is contained in:
metagn 2022-12-06 11:37:03 +03:00 • committed by GitHub
commit 739e1badb6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 167 additions and 53 deletions

View file

@ -865,7 +865,8 @@ const stdlibDirs* = [
"pure/concurrency", "pure/concurrency",
"pure/unidecode", "impure", "pure/unidecode", "impure",
"wrappers", "wrappers/linenoise", "wrappers", "wrappers/linenoise",
"windows", "posix", "js"] "windows", "posix", "js",
"deprecated/pure"]
const const
pkgPrefix = "pkg/" pkgPrefix = "pkg/"

View file

@ -46,15 +46,19 @@ Core
* [bitops](bitops.html) * [bitops](bitops.html)
Provides a series of low-level methods for bit manipulation. Provides a series of low-level methods for bit manipulation.
* [compilesettings](compilesettings.html)
This module allows querying the compiler about diverse configuration settings.
* [cpuinfo](cpuinfo.html) * [cpuinfo](cpuinfo.html)
This module implements procs to determine the number of CPUs / cores. This module implements procs to determine the number of CPUs / cores.
* [effecttraits](effecttraits.html)
This module provides access to the inferred .raises effects
for Nim's macro system.
* [endians](endians.html) * [endians](endians.html)
This module contains helpers that deal with different byte orders. This module contains helpers that deal with different byte orders.
* [lenientops](lenientops.html)
Provides binary operators for mixed integer/float expressions for convenience.
* [locks](locks.html) * [locks](locks.html)
Locks and condition variables for Nim. Locks and condition variables for Nim.
@ -122,9 +126,19 @@ Collections
* [packedsets](packedsets.html) * [packedsets](packedsets.html)
Efficient implementation of a set of ordinals as a sparse bit set. Efficient implementation of a set of ordinals as a sparse bit set.
* [ropes](ropes.html)
This module contains support for a *rope* data type.
Ropes can represent very long strings efficiently;
in particular, concatenation is done in O(1) instead of O(n).
* [sets](sets.html) * [sets](sets.html)
Nim hash set support. Nim hash set support.
* [strtabs](strtabs.html)
The `strtabs` module implements an efficient hash table that is a mapping
from strings to strings. Supports a case-sensitive, case-insensitive and
style-insensitive modes.
* [tables](tables.html) * [tables](tables.html)
Nim hash table support. Contains tables, ordered tables, and count tables. Nim hash table support. Contains tables, ordered tables, and count tables.
@ -143,20 +157,15 @@ String handling
Converts between different character encodings. On UNIX, this uses Converts between different character encodings. On UNIX, this uses
the `iconv` library, on Windows the Windows API. the `iconv` library, on Windows the Windows API.
* [parseutils](parseutils.html) * [formatfloat](formatfloat.html)
This module contains helpers for parsing tokens, numbers, identifiers, etc. This module implements formatting floats as strings.
* [pegs](pegs.html) * [objectdollar](objectdollar.html)
This module contains procedures and operators for handling PEGs. This module implements a generic `$` operator to convert objects to strings.
* [punycode](punycode.html) * [punycode](punycode.html)
Implements a representation of Unicode with the limited ASCII character subset. Implements a representation of Unicode with the limited ASCII character subset.
* [ropes](ropes.html)
This module contains support for a *rope* data type.
Ropes can represent very long strings efficiently;
in particular, concatenation is done in O(1) instead of O(n).
* [strbasics](strbasics.html) * [strbasics](strbasics.html)
This module provides some high performance string operations. This module provides some high performance string operations.
@ -171,11 +180,6 @@ String handling
* [strscans](strscans.html) * [strscans](strscans.html)
This module contains a `scanf` macro for convenient parsing of mini languages. This module contains a `scanf` macro for convenient parsing of mini languages.
* [strtabs](strtabs.html)
The `strtabs` module implements an efficient hash table that is a mapping
from strings to strings. Supports a case-sensitive, case-insensitive and
style-insensitive modes.
* [strutils](strutils.html) * [strutils](strutils.html)
This module contains common string handling operations like changing This module contains common string handling operations like changing
case of a string, splitting a string into substrings, searching for case of a string, splitting a string into substrings, searching for
@ -188,6 +192,9 @@ String handling
It provides a single proc that does Unicode to ASCII transliterations. It provides a single proc that does Unicode to ASCII transliterations.
Based on Python's Unidecode module. Based on Python's Unidecode module.
* [widestrs](widestrs.html)
Nim support for C/C++'s wide strings.
* [wordwrap](wordwrap.html) * [wordwrap](wordwrap.html)
This module contains an algorithm to wordwrap a Unicode string. This module contains an algorithm to wordwrap a Unicode string.
@ -205,6 +212,16 @@ Time handling
Generic Operating System Services Generic Operating System Services
--------------------------------- ---------------------------------
* [appdirs](appdirs.html)
This module implements helpers for determining special directories used by apps.
* [cmdline](cmdline.html)
This module contains system facilities for reading command
line parameters.
* [dirs](dirs.html)
This module implements directory handling.
* [distros](distros.html) * [distros](distros.html)
This module implements the basics for OS distribution ("distro") detection This module implements the basics for OS distribution ("distro") detection
and the OS's native package manager. and the OS's native package manager.
@ -216,9 +233,14 @@ Generic Operating System Services
* [dynlib](dynlib.html) * [dynlib](dynlib.html)
This module implements the ability to access symbols from shared libraries. This module implements the ability to access symbols from shared libraries.
* [marshal](marshal.html) * [envvars](envvars.html)
Contains procs for serialization and deserialization of arbitrary Nim This module implements environment variable handling.
data structures.
* [exitprocs](exitprocs.html)
This module allows adding hooks to program exit.
* [files](files.html)
This module implements file handling.
* [memfiles](memfiles.html) * [memfiles](memfiles.html)
This module provides support for memory-mapped files (Posix's `mmap`) This module provides support for memory-mapped files (Posix's `mmap`)
@ -229,15 +251,31 @@ Generic Operating System Services
reading command line arguments, working with directories, running shell reading command line arguments, working with directories, running shell
commands, etc. commands, etc.
* [oserrors](oserrors.html)
This module implements OS error reporting.
* [osproc](osproc.html) * [osproc](osproc.html)
Module for process communication beyond `os.execShellCmd`. Module for process communication beyond `os.execShellCmd`.
* [paths](paths.html)
This module implements path handling.
* [reservedmem](reservedmem.html)
This module provides utilities for reserving portions of the
address space of a program without consuming physical memory.
* [streams](streams.html) * [streams](streams.html)
This module provides a stream interface and two implementations thereof: This module provides a stream interface and two implementations thereof:
the `FileStream` and the `StringStream` which implement the stream the `FileStream` and the `StringStream` which implement the stream
interface for Nim file objects (`File`) and strings. Other modules interface for Nim file objects (`File`) and strings. Other modules
may provide other implementations for this standard stream interface. may provide other implementations for this standard stream interface.
* [symlinks](symlinks.html)
This module implements symlink handling.
* [syncio](syncio.html)
This module implements various synchronized I/O operations.
* [terminal](terminal.html) * [terminal](terminal.html)
This module contains a few procedures to control the *terminal* This module contains a few procedures to control the *terminal*
(also called *console*). The implementation simply uses ANSI escape (also called *console*). The implementation simply uses ANSI escape
@ -258,6 +296,9 @@ Math libraries
Floating-point environment. Handling of floating-point rounding and Floating-point environment. Handling of floating-point rounding and
exceptions (overflow, zero-divide, etc.). exceptions (overflow, zero-divide, etc.).
* [lenientops](lenientops.html)
Provides binary operators for mixed integer/float expressions for convenience.
* [math](math.html) * [math](math.html)
Mathematical operations like cosine, square root. Mathematical operations like cosine, square root.
@ -270,9 +311,6 @@ Math libraries
* [stats](stats.html) * [stats](stats.html)
Statistical analysis. Statistical analysis.
* [sums](sums.html)
Accurate summation functions.
* [sysrand](sysrand.html) * [sysrand](sysrand.html)
Cryptographically secure pseudorandom number generator. Cryptographically secure pseudorandom number generator.
@ -280,6 +318,9 @@ Math libraries
Internet Protocols and Support Internet Protocols and Support
------------------------------ ------------------------------
* [async](async.html)
Exports `asyncmacro` and `asyncfutures` for native backends, and `asyncjs` on the JS backend.
* [asyncdispatch](asyncdispatch.html) * [asyncdispatch](asyncdispatch.html)
This module implements an asynchronous dispatcher for IO operations. This module implements an asynchronous dispatcher for IO operations.
@ -295,6 +336,9 @@ Internet Protocols and Support
This module implements an asynchronous HTTP server using the `asyncnet` This module implements an asynchronous HTTP server using the `asyncnet`
module. module.
* [asyncmacro](asyncmacro.html)
Implements the `async` and `multisync` macros for `asyncdispatch`.
* [asyncnet](asyncnet.html) * [asyncnet](asyncnet.html)
This module implements asynchronous sockets based on the `asyncdispatch` This module implements asynchronous sockets based on the `asyncdispatch`
module. module.
@ -326,6 +370,9 @@ Internet Protocols and Support
This module implements a selector API with backends specific to each OS. This module implements a selector API with backends specific to each OS.
Currently, epoll on Linux and select on other operating systems. Currently, epoll on Linux and select on other operating systems.
* [socketstreams](socketstreams.html)
This module provides an implementation of the streams interface for sockets.
* [uri](uri.html) * [uri](uri.html)
This module provides functions for working with URIs. This module provides functions for working with URIs.
@ -333,12 +380,20 @@ Internet Protocols and Support
Threading Threading
--------- ---------
* [threads](threads.html) * [isolation](isolation.html)
Basic Nim thread support. This module implements the `Isolated[T]` type for
safe construction of isolated subgraphs that can be
passed efficiently to different channels and threads.
* [tasks](tasks.html)
This module provides basic primitives for creating parallel programs.
* [threadpool](threadpool.html) * [threadpool](threadpool.html)
Implements Nim's [spawn](manual_experimental.html#parallel-amp-spawn). Implements Nim's [spawn](manual_experimental.html#parallel-amp-spawn).
* [typedthreads](typedthreads.html)
Basic Nim thread support.
Parsers Parsers
------- -------
@ -349,9 +404,6 @@ Parsers
* [json](json.html) * [json](json.html)
High-performance JSON parser. High-performance JSON parser.
* [jsonutils](jsonutils.html)
This module implements a hookable (de)serialization for arbitrary types.
* [lexbase](lexbase.html) * [lexbase](lexbase.html)
This is a low-level module that implements an extremely efficient buffering This is a low-level module that implements an extremely efficient buffering
scheme for lexers and parsers. This is used by the diverse parsing modules. scheme for lexers and parsers. This is used by the diverse parsing modules.
@ -375,12 +427,18 @@ Parsers
* [parsesql](parsesql.html) * [parsesql](parsesql.html)
The `parsesql` module implements a simple high-performance SQL parser. The `parsesql` module implements a simple high-performance SQL parser.
* [parseutils](parseutils.html)
This module contains helpers for parsing tokens, numbers, identifiers, etc.
* [parsexml](parsexml.html) * [parsexml](parsexml.html)
The `parsexml` module implements a simple high performance XML/HTML parser. The `parsexml` module implements a simple high performance XML/HTML parser.
The only encoding that is supported is UTF-8. The parser has been designed The only encoding that is supported is UTF-8. The parser has been designed
to be somewhat error-correcting, so that even some "wild HTML" found on the to be somewhat error-correcting, so that even some "wild HTML" found on the
web can be parsed with it. web can be parsed with it.
* [pegs](pegs.html)
This module contains procedures and operators for handling PEGs.
Docutils Docutils
-------- --------
@ -415,6 +473,9 @@ XML Processing
Generators Generators
---------- ----------
* [genasts](genasts.html)
This module implements AST generation using captured variables for macros.
* [htmlgen](htmlgen.html) * [htmlgen](htmlgen.html)
This module implements a simple XML and HTML code This module implements a simple XML and HTML code
generator. Each commonly used HTML tag has a corresponding macro generator. Each commonly used HTML tag has a corresponding macro
@ -443,9 +504,24 @@ Hashing
This module implements the SHA-1 checksum algorithm. This module implements the SHA-1 checksum algorithm.
Serialization
-------------
* [jsonutils](jsonutils.html)
This module implements a hookable (de)serialization for arbitrary types
using JSON.
* [marshal](marshal.html)
Contains procs for serialization and deserialization of arbitrary Nim
data structures.
Miscellaneous Miscellaneous
------------- -------------
* [assertions](assertions.html)
This module implements assertion handling.
* [browsers](browsers.html) * [browsers](browsers.html)
This module implements procs for opening URLs with the user's default This module implements procs for opening URLs with the user's default
browser. browser.
@ -456,9 +532,15 @@ Miscellaneous
* [coro](coro.html) * [coro](coro.html)
This module implements experimental coroutines in Nim. This module implements experimental coroutines in Nim.
* [decls](decls.html)
This module implements syntax sugar for some declarations.
* [enumerate](enumerate.html) * [enumerate](enumerate.html)
This module implements `enumerate` syntactic sugar based on Nim's macro system. This module implements `enumerate` syntactic sugar based on Nim's macro system.
* [importutils](importutils.html)
Utilities related to import and symbol resolution.
* [logging](logging.html) * [logging](logging.html)
This module implements a simple logger. This module implements a simple logger.
@ -477,9 +559,12 @@ Miscellaneous
* [with](with.html) * [with](with.html)
This module implements the `with` macro for easy function chaining. This module implements the `with` macro for easy function chaining.
* [wrapnils](wrapnils.html)
This module allows evaluating expressions safely against nil dereferences.
Modules for the JS backend
-------------------------- Modules for the JavaScript backend
----------------------------------
* [asyncjs](asyncjs.html) * [asyncjs](asyncjs.html)
Types and macros for writing asynchronous procedures in JavaScript. Types and macros for writing asynchronous procedures in JavaScript.
@ -497,9 +582,15 @@ Modules for the JS backend
The wrapper of core JavaScript functions. For most purposes, you should be using The wrapper of core JavaScript functions. For most purposes, you should be using
the `math`, `json`, and `times` stdlib modules instead of this module. the `math`, `json`, and `times` stdlib modules instead of this module.
* [jsfetch](jshttp.html)
Wrapper for `fetch`.
* [jsffi](jsffi.html) * [jsffi](jsffi.html)
Types and macros for easier interaction with JavaScript. Types and macros for easier interaction with JavaScript.
* [jsre](jsre.html)
Regular Expressions for the JavaScript target.
Impure libraries Impure libraries
================ ================
@ -515,14 +606,18 @@ Regular expressions
Database support Database support
---------------- ----------------
* [db_postgres](db_postgres.html)
A higher level PostgreSQL database wrapper. The same interface is implemented
for other databases too.
* [db_mysql](db_mysql.html) * [db_mysql](db_mysql.html)
A higher level MySQL database wrapper. The same interface is implemented A higher level MySQL database wrapper. The same interface is implemented
for other databases too. for other databases too.
* [db_odbc](db_odbc.html)
A higher level ODBC database wrapper. The same interface is implemented
for other databases too.
* [db_postgres](db_postgres.html)
A higher level PostgreSQL database wrapper. The same interface is implemented
for other databases too.
* [db_sqlite](db_sqlite.html) * [db_sqlite](db_sqlite.html)
A higher level SQLite database wrapper. The same interface is implemented A higher level SQLite database wrapper. The same interface is implemented
for other databases too. for other databases too.
@ -570,14 +665,14 @@ Regular expressions
Database support Database support
---------------- ----------------
* [postgres](postgres.html)
Contains a wrapper for the PostgreSQL API.
* [mysql](mysql.html) * [mysql](mysql.html)
Contains a wrapper for the mySQL API. Contains a wrapper for the mySQL API.
* [sqlite3](sqlite3.html)
Contains a wrapper for the SQLite 3 API.
* [odbcsql](odbcsql.html) * [odbcsql](odbcsql.html)
interface to the ODBC driver. interface to the ODBC driver.
* [postgres](postgres.html)
Contains a wrapper for the PostgreSQL API.
* [sqlite3](sqlite3.html)
Contains a wrapper for the SQLite 3 API.
Network Programming and Internet Protocols Network Programming and Internet Protocols

View file

@ -76,7 +76,6 @@ At least the following standard library modules are available:
* [htmlgen](htmlgen.html) * [htmlgen](htmlgen.html)
* [httpcore](httpcore.html) * [httpcore](httpcore.html)
* [lenientops](lenientops.html) * [lenientops](lenientops.html)
* [mersenne](mersenne.html)
* [options](options.html) * [options](options.html)
* [parseutils](parseutils.html) * [parseutils](parseutils.html)
* [punycode](punycode.html) * [punycode](punycode.html)
@ -89,7 +88,6 @@ At least the following standard library modules are available:
* [uri](uri.html) * [uri](uri.html)
* [std/editdistance](editdistance.html) * [std/editdistance](editdistance.html)
* [std/wordwrap](wordwrap.html) * [std/wordwrap](wordwrap.html)
* [std/sums](sums.html)
* [parsecsv](parsecsv.html) * [parsecsv](parsecsv.html)
* [parsecfg](parsecfg.html) * [parsecfg](parsecfg.html)
* [parsesql](parsesql.html) * [parsesql](parsesql.html)

View file

@ -1,3 +1,6 @@
## Exports [asyncmacro](asyncmacro.html) and [asyncfutures](asyncfutures.html) for native backends,
## and [asyncjs](asyncjs.html) on the JS backend.
when defined(js): when defined(js):
import asyncjs import asyncjs
export asyncjs export asyncjs

View file

@ -1983,7 +1983,8 @@ proc send*(socket: AsyncFD, data: string,
return retFuture return retFuture
# -- Await Macro # -- Await Macro
include asyncmacro import asyncmacro
export asyncmacro
proc readAll*(future: FutureStream[string]): owned(Future[string]) {.async.} = proc readAll*(future: FutureStream[string]): owned(Future[string]) {.async.} =
## Returns a future that will complete when all the string data from the ## Returns a future that will complete when all the string data from the

View file

@ -7,7 +7,7 @@
# distribution, for details about the copyright. # distribution, for details about the copyright.
# #
## `asyncdispatch` module depends on the `asyncmacro` module to work properly. ## Implements the `async` and `multisync` macros for `asyncdispatch`.
import macros, strutils, asyncfutures import macros, strutils, asyncfutures

View file

@ -47,7 +47,6 @@ runnableExamples:
## * `fenv module <fenv.html>`_ for handling of floating-point rounding ## * `fenv module <fenv.html>`_ for handling of floating-point rounding
## and exceptions (overflow, zero-divide, etc.) ## and exceptions (overflow, zero-divide, etc.)
## * `random module <random.html>`_ for a fast and tiny random number generator ## * `random module <random.html>`_ for a fast and tiny random number generator
## * `mersenne module <mersenne.html>`_ for the Mersenne Twister random number generator
## * `stats module <stats.html>`_ for statistical analysis ## * `stats module <stats.html>`_ for statistical analysis
## * `strformat module <strformat.html>`_ for formatting floats for printing ## * `strformat module <strformat.html>`_ for formatting floats for printing
## * `system module <system.html>`_ for some very basic and trivial math operators ## * `system module <system.html>`_ for some very basic and trivial math operators

View file

@ -66,7 +66,6 @@ runnableExamples:
## See also ## See also
## ======== ## ========
## * `std/sysrand module <sysrand.html>`_ for a cryptographically secure pseudorandom number generator ## * `std/sysrand module <sysrand.html>`_ for a cryptographically secure pseudorandom number generator
## * `mersenne module <mersenne.html>`_ for the Mersenne Twister random number generator
## * `math module <math.html>`_ for basic math routines ## * `math module <math.html>`_ for basic math routines
## * `stats module <stats.html>`_ for statistical analysis ## * `stats module <stats.html>`_ for statistical analysis
## * `list of cryptographic and hashing modules <lib.html#pure-libraries-hashing>`_ ## * `list of cryptographic and hashing modules <lib.html#pure-libraries-hashing>`_

View file

@ -9,7 +9,7 @@
## :Authors: Zahary Karadjov ## :Authors: Zahary Karadjov
## ##
## This module provides utilities for reserving a portions of the ## This module provides utilities for reserving portions of the
## address space of a program without consuming physical memory. ## address space of a program without consuming physical memory.
## It can be used to implement a dynamically resizable buffer that ## It can be used to implement a dynamically resizable buffer that
## is guaranteed to remain in the same memory location. The buffer ## is guaranteed to remain in the same memory location. The buffer

View file

@ -1,3 +1,5 @@
## This module implements helpers for determining special directories used by apps.
from std/private/osappdirs import nil from std/private/osappdirs import nil
import std/paths import std/paths
import std/envvars import std/envvars

View file

@ -1,5 +1,4 @@
# see `semLowerLetVarCustomPragma` for compiler support that enables these ## This module implements syntax sugar for some declarations.
# lowerings
import macros import macros

View file

@ -1,3 +1,5 @@
## This module implements directory handling.
from paths import Path, ReadDirEffect, WriteDirEffect from paths import Path, ReadDirEffect, WriteDirEffect
from std/private/osdirs import dirExists, createDir, existsOrCreateDir, removeDir, from std/private/osdirs import dirExists, createDir, existsOrCreateDir, removeDir,

View file

@ -8,7 +8,7 @@
# #
## The `std/envvars` module implements environment variables handling. ## The `std/envvars` module implements environment variable handling.
import std/oserrors import std/oserrors
type type

View file

@ -7,6 +7,8 @@
# distribution, for details about the copyright. # distribution, for details about the copyright.
# #
## This module allows adding hooks to program exit.
import locks import locks
type type

View file

@ -1,3 +1,5 @@
## This module implements file handling.
from paths import Path, ReadDirEffect, WriteDirEffect from paths import Path, ReadDirEffect, WriteDirEffect
from std/private/osfiles import fileExists, removeFile, from std/private/osfiles import fileExists, removeFile,

View file

@ -7,6 +7,8 @@
# distribution, for details about the copyright. # distribution, for details about the copyright.
# #
## This module implements formatting floats as strings.
when defined(nimPreviewSlimSystem): when defined(nimPreviewSlimSystem):
import std/assertions import std/assertions
else: else:

View file

@ -1,3 +1,5 @@
## This module implements AST generation using captured variables for macros.
import macros import macros
type GenAstOpt* = enum type GenAstOpt* = enum

View file

@ -2,7 +2,8 @@
when not defined(js): when not defined(js):
{.fatal: "Module jsfetch is designed to be used with the JavaScript backend.".} {.fatal: "Module jsfetch is designed to be used with the JavaScript backend.".}
import std/[asyncjs, jsheaders, jsformdata] import std/[asyncjs, jsformdata, jsheaders]
export jsformdata, jsheaders
from std/httpcore import HttpMethod from std/httpcore import HttpMethod
from std/jsffi import JsObject from std/jsffi import JsObject
@ -116,7 +117,7 @@ func `$`*(self: Request | Response | FetchOptions): string = $toCstring(self)
runnableExamples("-r:off"): runnableExamples("-r:off"):
import std/[asyncjs, jsconsole, jsheaders, jsformdata] import std/[asyncjs, jsconsole, jsformdata, jsheaders]
from std/httpcore import HttpMethod from std/httpcore import HttpMethod
from std/jsffi import JsObject from std/jsffi import JsObject
from std/sugar import `=>` from std/sugar import `=>`

View file

@ -1,5 +1,5 @@
##[ ##[
This module implements a hookable (de)serialization for arbitrary types. This module implements a hookable (de)serialization for arbitrary types using JSON.
Design goal: avoid importing modules where a custom serialization is needed; Design goal: avoid importing modules where a custom serialization is needed;
see strtabs.fromJsonHook,toJsonHook for an example. see strtabs.fromJsonHook,toJsonHook for an example.
]## ]##

View file

@ -1,3 +1,5 @@
## This module implements a generic `$` operator to convert objects to strings.
import std/private/miscdollars import std/private/miscdollars
proc `$`*[T: object](x: T): string = proc `$`*[T: object](x: T): string =

View file

@ -1,3 +1,5 @@
## This module implements path handling.
import std/private/osseps import std/private/osseps
export osseps export osseps

View file

@ -1,3 +1,5 @@
## This module implements symlink (symbolic link) handling.
from paths import Path, ReadDirEffect from paths import Path, ReadDirEffect
from std/private/ossymlinks import symlinkExists, createSymlink, expandSymlink from std/private/ossymlinks import symlinkExists, createSymlink, expandSymlink

View file

@ -7,7 +7,7 @@
# distribution, for details about the copyright. # distribution, for details about the copyright.
# #
# Nim support for C/C++'s `wide strings`:idx:. ## Nim support for C/C++'s `wide strings`:idx:.
#when not declared(ThisIsSystem): #when not declared(ThisIsSystem):
# {.error: "You must not import this module explicitly".} # {.error: "You must not import this module explicitly".}