Janet 1.38.0-73334f3 Documentation
(Other Versions:
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
jpm/cc/archive-c jpm/cc/compile-c jpm/cc/create-buffer-c jpm/cc/create-buffer-c-impl jpm/cc/create-executable jpm/cc/embed-name jpm/cc/entry-name jpm/cc/entry-replace jpm/cc/link-c jpm/cc/make-bin-source jpm/cc/make-define jpm/cc/make-defines jpm/cc/modpath-to-meta jpm/cc/modpath-to-static jpm/cc/out-path jpm/cgen/add-loader jpm/cgen/ir jpm/cgen/mangle jpm/cgen/print-ir jpm/commands/build jpm/commands/clean jpm/commands/configure jpm/commands/deps jpm/commands/enable-local-mode jpm/commands/help jpm/commands/install jpm/commands/jpm-debug-repl jpm/commands/list-installed jpm/commands/list-pkgs jpm/commands/list-rules jpm/commands/list-tasks jpm/commands/new-c-project jpm/commands/new-exe-project jpm/commands/new-project jpm/commands/quickbin jpm/commands/set-tree jpm/commands/show-config jpm/commands/show-paths jpm/commands/show-rule-tree jpm/commands/test jpm/commands/update-pkgs jpm/config/builtin-configs jpm/config/config-checkers jpm/config/config-docs jpm/config/config-options jpm/config/config-parsers jpm/config/config-set jpm/config/defconf jpm/config/dyn:ar jpm/config/dyn:auto-shebang jpm/config/dyn:binpath jpm/config/dyn:build-type jpm/config/dyn:buildpath jpm/config/dyn:c++ jpm/config/dyn:c++-link jpm/config/dyn:cc jpm/config/dyn:cc-link jpm/config/dyn:cflags jpm/config/dyn:cflags-verbose jpm/config/dyn:config-file jpm/config/dyn:cppflags jpm/config/dyn:curlpath jpm/config/dyn:dest-dir jpm/config/dyn:dynamic-cflags jpm/config/dyn:dynamic-lflags jpm/config/dyn:gitpath jpm/config/dyn:headerpath jpm/config/dyn:is-msvc jpm/config/dyn:janet jpm/config/dyn:janet-cflags jpm/config/dyn:janet-importlib jpm/config/dyn:janet-lflags jpm/config/dyn:ldflags jpm/config/dyn:lflags jpm/config/dyn:libpath jpm/config/dyn:local jpm/config/dyn:manpath jpm/config/dyn:modext jpm/config/dyn:modpath jpm/config/dyn:nocolor jpm/config/dyn:offline jpm/config/dyn:optimize jpm/config/dyn:pkglist jpm/config/dyn:silent jpm/config/dyn:statext jpm/config/dyn:tarpath jpm/config/dyn:test jpm/config/dyn:tree jpm/config/dyn:update-pkgs jpm/config/dyn:use-batch-shell jpm/config/dyn:verbose jpm/config/dyn:workers jpm/config/load-config jpm/config/load-config-file jpm/config/load-default jpm/config/load-options jpm/config/opt jpm/config/read-env-variables jpm/config/save-config jpm/config/shorthand-mapping jpm/dagbuild/pdag jpm/dagbuild/pmap jpm/make-config/auto jpm/make-config/generate-config jpm/pm/bundle-install jpm/pm/curl jpm/pm/do-rule jpm/pm/download-bundle jpm/pm/download-git-bundle jpm/pm/download-tar-bundle jpm/pm/git jpm/pm/import-rules jpm/pm/is-bundle-installed jpm/pm/load-lockfile jpm/pm/load-project-meta jpm/pm/make-jpm-env jpm/pm/make-lockfile jpm/pm/out-of-tree-config jpm/pm/post-deps jpm/pm/require-jpm jpm/pm/resolve-bundle jpm/pm/tar jpm/pm/update-git-bundle jpm/pm/update-installed jpm/rules/add-body jpm/rules/add-dep jpm/rules/add-input jpm/rules/add-output jpm/rules/add-thunk jpm/rules/build-rules jpm/rules/getrules jpm/rules/phony jpm/rules/rule jpm/rules/sh-phony jpm/rules/sh-rule jpm/rules/sh-task jpm/rules/task jpm/scaffold/scaffold-project jpm/shutil/abspath jpm/shutil/basename jpm/shutil/clear-cache jpm/shutil/clear-manifest jpm/shutil/clexe-shell jpm/shutil/color jpm/shutil/copy jpm/shutil/copyfile jpm/shutil/create-dirs jpm/shutil/devnull jpm/shutil/dirname jpm/shutil/do-monkeypatch jpm/shutil/drop1-shell jpm/shutil/exec-slurp jpm/shutil/filepath-replace jpm/shutil/find-build-dir jpm/shutil/find-cache jpm/shutil/find-manifest jpm/shutil/find-manifest-dir jpm/shutil/is-mingw jpm/shutil/is-win jpm/shutil/is-win-or-mingw jpm/shutil/path-splitter jpm/shutil/rimraf jpm/shutil/rm jpm/shutil/run-patched jpm/shutil/run-repl jpm/shutil/run-script jpm/shutil/shell jpm/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.
(entry-replace name)
Escape special characters in the entry-name
(link-c has-cpp opts target & objects)
Link C or C++ object files together to make a native module.
(make-bin-source declarations lookup-into-invocations no-core)
(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-build-dir)
Gets the build directory to output files to.
(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.