diff --git a/doc/src/base/base.md b/doc/src/base/base.md index eb40fc96c384e..35cf307cbb074 100644 --- a/doc/src/base/base.md +++ b/doc/src/base/base.md @@ -112,14 +112,14 @@ where [] ``` -## Standard Modules +## [Standard Modules](@id standard-modules) ```@docs Main Core Base ``` -## Base Submodules +## [Base Submodules](@id base-submodules) ```@docs Base.Broadcast Base.Docs diff --git a/doc/src/index.md b/doc/src/index.md index 8342ff448625d..7d781f25b4235 100644 --- a/doc/src/index.md +++ b/doc/src/index.md @@ -76,7 +76,7 @@ and [Ruby](https://en.wikipedia.org/wiki/Ruby_(programming_language)). The most significant departures of Julia from typical dynamic languages are: - * The core language imposes very little; Julia Base and the standard library are written in Julia itself, including + * The core language imposes very little; [Julia Base and the standard library](@ref man-core-base-and-stdlib) are written in Julia itself, including primitive operations like integer arithmetic * A rich language of types for constructing and describing objects, that can also optionally be used to make type declarations @@ -126,3 +126,40 @@ language. In addition to the above, some advantages of Julia over comparable sys * Call C functions directly (no wrappers or special APIs needed) * Powerful shell-like capabilities for managing other processes * Lisp-like macros and other metaprogramming facilities + +## [Julia Standard Modules and the Standard Library](@id man-standard-modules-stdlib) + +The Julia runtime comes with [standard modules](@ref standard-modules), +which are essential namespaces that are usually loaded automatically. + +```@docs; canonical=false +Core +Base +``` + +Julia's `Base` module contains various [useful submodules](@ref base-submodules). + +### [The Standard Library](@id man-stdlib) + +The Julia standard library contains additional, commonly used packages that are installed alongside the Julia runtime by default. +To use a standard library package, it is first necessary to load the package with a [`using`](@ref) or [`import`](@ref) statement. +Links to available standard library packages are provided below, +and may also be found in the website sidebar. +Their source code is available in the `Sys.STDLIB` directory of a Julia installation. + +```@eval +import Markdown +list = sort(filter(x -> match(r"_jll$", x) === nothing, readdir(Sys.STDLIB))) +Markdown.parse(join("- [`" .* list .* "`](stdlib/" .* list .* ".html)", "\n")) +``` + +Julia also provides various standard, pre-built binary libraries +of established software that is written in other languages. +By convention, these packages have names that end with `_jll`. +The [`using`](@ref) statement can load symbol names from these binary libraries: + +```@eval +import Markdown +list = sort(filter(x -> match(r"_jll$", x) !== nothing, readdir(Sys.STDLIB))) +Markdown.parse(join("- [`" .* list .* "`](stdlib/" .* list .* ".html)", "\n")) +```