Janet 1.39.1-e9c6678 Documentation
(Other Versions:
1.38.0
1.37.1
1.36.0
1.35.0
1.34.0
1.31.0
1.29.1
1.28.0
1.27.0
1.26.0
1.25.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.1
1.17.1
1.16.1
1.15.0
1.13.1
1.12.2
1.11.1
1.10.1
1.9.1
1.8.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.1
)
JPM
Index
cc/archive-c cc/compile-c cc/create-buffer-c cc/create-buffer-c-impl cc/create-executable cc/embed-name cc/entry-name cc/entry-replace cc/link-c cc/make-bin-source cc/make-define cc/make-defines cc/modpath-to-meta cc/modpath-to-static cc/out-path cgen/add-loader cgen/ir cgen/mangle cgen/print-ir commands/build commands/clean commands/configure commands/deps commands/enable-local-mode commands/help commands/install commands/jpm-debug-repl commands/list-installed commands/list-pkgs commands/list-rules commands/list-tasks commands/new-c-project commands/new-exe-project commands/new-project commands/quickbin commands/set-tree commands/show-config commands/show-paths commands/show-rule-tree commands/test commands/update-pkgs config/builtin-configs config/config-checkers config/config-docs config/config-options config/config-parsers config/config-set config/defconf config/dyn:ar config/dyn:auto-shebang config/dyn:binpath config/dyn:build-type config/dyn:buildpath config/dyn:c++ config/dyn:c++-link config/dyn:cc config/dyn:cc-link config/dyn:cflags config/dyn:cflags-verbose config/dyn:config-file config/dyn:cppflags config/dyn:curlpath config/dyn:dest-dir config/dyn:dynamic-cflags config/dyn:dynamic-lflags config/dyn:gitpath config/dyn:headerpath config/dyn:is-msvc config/dyn:janet config/dyn:janet-cflags config/dyn:janet-importlib config/dyn:janet-lflags config/dyn:ldflags config/dyn:lflags config/dyn:libpath config/dyn:local config/dyn:manpath config/dyn:modext config/dyn:modpath config/dyn:nocolor config/dyn:offline config/dyn:optimize config/dyn:pkglist config/dyn:silent config/dyn:statext config/dyn:tarpath config/dyn:test config/dyn:tree config/dyn:update-pkgs config/dyn:use-batch-shell config/dyn:verbose config/dyn:workers config/load-config config/load-config-file config/load-default config/load-options config/opt config/read-env-variables config/save-config config/shorthand-mapping dagbuild/pdag dagbuild/pmap make-config/auto make-config/generate-config pm/bundle-install pm/curl pm/do-rule pm/download-bundle pm/download-git-bundle pm/download-tar-bundle pm/git pm/import-rules pm/is-bundle-installed pm/load-lockfile pm/load-project-meta pm/make-jpm-env pm/make-lockfile pm/out-of-tree-config pm/post-deps pm/require-jpm pm/resolve-bundle pm/tar pm/update-git-bundle pm/update-installed rules/add-body rules/add-dep rules/add-input rules/add-output rules/add-thunk rules/build-rules rules/getrules rules/phony rules/rule rules/sh-phony rules/sh-rule rules/sh-task rules/task scaffold/scaffold-project shutil/abspath shutil/basename shutil/clear-cache shutil/clear-manifest shutil/clexe-shell shutil/color shutil/copy shutil/copyfile shutil/create-dirs shutil/devnull shutil/dirname shutil/do-monkeypatch shutil/drop1-shell shutil/exec-slurp shutil/filepath-replace shutil/find-build-dir shutil/find-cache shutil/find-manifest shutil/find-manifest-dir shutil/is-mingw shutil/is-win shutil/is-win-or-mingw shutil/path-splitter shutil/rimraf shutil/rm shutil/run-patched shutil/run-repl shutil/run-script shutil/shell shutil/undo-monkeypatch
(archive-c opts target & objects) Link object files together to make a static library.
(compile-c compiler opts src dest &opt static?) Compile a C file into an object file.
(create-buffer-c source dest name) Inline raw byte file as a c file.
(create-executable opts source dest no-core) Links an image with libjanet.a (or .lib) to produce an executable. Also will try to link native modules into the final executable as well.
(entry-name name) Name of symbol that enters static compilation of a module.
(link-c has-cpp opts target & objects) Link C or C++ object files together to make a native module.
(make-define define value) Generate strings for adding custom defines to the compiler.
(make-defines defines) Generate many defines. Takes a dictionary of defines. If a value is true, generates -DNAME (/DNAME on windows), otherwise -DNAME=value.
(modpath-to-meta path) Get the meta file path (.meta.janet) corresponding to a native module path (.so).
(modpath-to-static path) Get the static library (.a) path corresponding to a native module path (.so).
(out-path path from-ext to-ext) Take a source file path and convert it to an output path.
(add-loader) Adds the custom template loader to Janet's module/loaders and update module/paths.
(ir & body) Macro that automatically quotes the body provided and calls (print-ir ...) on the body.
(mangle token) Convert any sequence of bytes to a valid C identifier in a way that is unlikely to collide. `print-ir` will not mangle symbols for you.
(configure &opt path) Setup an out-of-tree build with certain configuration options.
(enable-local-mode) Modify the config to enable local development. Creates a local tree if one does not exist in ./jpm_tree/
(set-tree tree) Set the module tree for installing dependencies. This just sets the modpath binpath and manpath. Also creates the tree if it doesn't exist. However, still uses the system libraries and headers for janet.
Table of all built-in options, as opposed to project deifned options.
A table of all of the dynamic config bindings to checkers (validators).
(defconf kw &opt parser docs options) Define a function that wraps (dyn :keyword). This will allow use of dynamic bindings with static runtime checks.
(load-config settings &opt override) Load a configuration from a table or struct.
(load-config-file path &opt override) Load a configuration from a file. If override is set, will override already set values. Otherwise will prefer the current value over the settings from the config file.
(load-options &opt path) Load a file that contains config options that can be set. If no such file exists, then do nothing.
(opt opts key &opt dflt) Get an option, allowing overrides via dynamic bindings AND some default value dflt if no dynamic binding is set.
(read-env-variables) Read environment variables that correspond to config variables into dyns.
(save-config path) Write the current configuration information to a file.
(pdag f dag &opt n-workers) Executes a dag by calling f on every node in the graph. Can set the number of workers for parallel execution. The graph is represented as a table mapping nodes to arrays of child nodes. Each node will only be evaluated after all children have been evaluated. Returns a table mapping each node to the result of `(f node)`.
(pmap f data) Function form of `ev/gather`. If any of the sibling fibers error, all other siblings will be canceled. Returns the gathered results in an array.
(generate-config &opt destdir silent as-data) Make a pretty good configuration file for the current target. Returns a buffer with config source contents. If `destdir` is given, will generate the folders needed to create a jpm tree.
(bundle-install bundle &opt no-deps force-update) Install a bundle from a git repository.
(download-bundle url bundle-type &opt tag shallow) Download the package source (using git) to the local cache. Return the path to the downloaded or cached soure code.
(download-git-bundle bundle-dir url tag shallow) Download a git bundle from a remote respository
(download-tar-bundle bundle-dir url &opt force-gz) Download a dependency from a tape archive. The archive should have exactly one top level directory that contains the contents of the project.
(import-rules path &opt base-env) Import another file that defines more rules. This ruleset is merged into the current ruleset.
(is-bundle-installed bundle) Determines if a bundle has been installed or not
(load-project-meta &opt path) Load the metadata from a project.janet file without doing a full evaluation of the project.janet file. Returns a struct with the project metadata. Raises an error if no metadata found.
(make-jpm-env &opt base-env) Create an environment that is preloaded with jpm symbols.
(out-of-tree-config path &opt options) Create an out of tree build configuration. This lets a user have a debug or release build, as well as other configuration on a one time basis. This works by creating a new directory with a project.janet that loads in the original project.janet file with some settings changed.
(post-deps & body) Run code at the top level if jpm dependencies are installed. Build code that imports dependencies should be wrapped with this macro, as project.janet needs to be able to run successfully even without dependencies installed.
(require-jpm path &opt base-env) Require a jpm file project file. This is different from a normal require in that code is loaded in the jpm environment.
(resolve-bundle bundle) Convert any bundle string/table to the normalized table form.
(update-git-bundle bundle-dir tag shallow) Fetch latest tag version from remote repository
(update-installed) Update all previously installed packages to their latest versions.
(add-body target & body) Add recipe code to an existing rule. This makes existing rules do more but does not modify the dependency graph.
(add-input target input) Add a dependency to an existing rule. Useful for extending phony rules or extending the dependency graph of existing rules.
(add-output target output) Add an output file to an existing rule. Rules can contain multiple outputs, but are still referred to by a main target name.
(build-rules rules targets &opt n-workers) Given a graph of all rules, extract a work graph that will build out-of-date files.
(sh-rule target deps & body) Add a rule that invokes a shell command, and fails if the command returns non-zero.
(sh-task target deps & body) Add a task that invokes a shell command, and fails if the command returns non-zero.
(task target deps & body) Add a task rule to the rule graph. A task rule will always run if invoked (it is always considered out of date).
(scaffold-project name &opt options) Generate a standardized project scaffold.
(abspath path) Create an absolute path. Does not resolve . and .. (useful for generating entries in install manifest file).
(basename path) Get the filename of a path without any leading directory components.
(color input-color text) Color text with ascii escape sequences if (os/isatty)
(copy src dest) Copy a file or directory recursively from one location to another.
(create-dirs dest) Create all directories needed for a file (mkdir -p).
(do-monkeypatch build-dir) Modify the existing environment to have the same paths as the test environment.
(drop1-shell std args) Variant of `shell` to play nice with cl.exe, which outputs some junk to terminal that can't be turned off.
(exec-slurp & args) Read stdout of subprocess and return it trimmed in a string.
(filepath-replace repo) Remove special characters from a string or path to make it into a path segment.
(find-manifest name) Get the full path of a manifest file given a package name.
(find-manifest-dir) Get the path to the directory containing manifests for installed packages.
(is-win) Check if we should assume a DOS-like shell or default to posix shell.
(run-patched & extra-args) Run a subprocess Janet repl that has the same environment as the test environment.
(run-script path) Run a local script in the monkey patched environment.