roc/crates
2022-10-26 14:41:25 +11:00
..
ast adding crates/README.md for rust docs 2022-10-26 14:41:25 +11:00
cli adding crates/README.md for rust docs 2022-10-26 14:41:25 +11:00
cli_testing_examples moved platform-switching 2022-10-17 15:22:20 +02:00
cli_utils adding crates/README.md for rust docs 2022-10-26 14:41:25 +11:00
code_markup De-bump all v0.1.0 Roc packages to v0.0.1 2022-10-09 00:16:19 -06:00
compiler Merge pull request #4381 from roc-lang/windows-rust-platforms 2022-10-24 18:27:26 -07:00
docs Drop the trailing "/" in docs sidebar links 2022-10-23 21:10:35 -04:00
docs_cli Bump libc from 0.2.133 to 0.2.135 2022-10-10 13:00:20 +00:00
editor fixed links, minimal exceptions 2022-10-15 14:25:03 +02:00
error_macros Rephrase CPU-related "platform"/"host" to "target"/"your machine" 2022-09-11 10:25:02 -06:00
glue Disallow typing optional fields when required fields are annotated 2022-10-18 15:50:20 -05:00
highlight Disable peg grammar test using abilities 2022-10-12 16:38:37 -05:00
linker remove a copy 2022-10-23 22:59:25 +02:00
repl_cli Add how to newline repl tips at start-up 2022-10-11 18:25:08 -07:00
repl_eval Fix repl examination of FunctionOrTagUnion 2022-10-05 17:25:12 -05:00
repl_expect Do not attempt to lookup functions in expects 2022-10-24 10:28:56 -05:00
repl_test Properly wrap with newtype-by-void layouts in repl 2022-10-05 11:17:57 -05:00
repl_wasm Properly wrap with newtype-by-void layouts in repl 2022-10-05 11:17:57 -05:00
reporting Remove redundant reference 2022-10-24 14:00:45 -05:00
roc_std expand safety doc comment 2022-10-19 12:09:05 -07:00
test_utils Bump pretty_assertions from 1.2.1 to 1.3.0 2022-09-12 05:28:00 +00:00
tracing Bump tracing-subscriber from 0.3.15 to 0.3.16 2022-10-08 14:50:30 +00:00
utils changed Cargo versions from 0.1.0 to 0.0.1 2022-08-03 11:41:19 +02:00
vendor s/rtfeldman/roc-lang/g in links to GitHub repos 2022-08-12 15:24:09 -04:00
wasi-libc-sys s/rtfeldman/roc-lang/g in links to GitHub repos 2022-08-12 15:24:09 -04:00
README.md adding crates/README.md for rust docs 2022-10-26 14:41:25 +11:00

Roc Internals

Roc has different crates for various binaries and libraries used by the toolset. These are described below to help get you started. If you see something here that is out of date, please correct it or follow up in the Zulip chat.

Use cargo doc to generate docs for most crates; e.g. cargo doc --package roc_ast --open.

Roc AST roc_ast

The AST is used by the editor and (soon) docs. In contrast to the compiler, the types in AST do not keep track of a location in a file.

Roc CLI roc_cli and roc binary

Builds the roc binary that brings together all of functionality in the Roc toolset.

Roc CLI Utils cli_utils

Provides shared code for cli tests and benchmarks

Roc Markup roc_code_markup

Roc's very own markup language. This library is used by the editor and docs.

Roc Compiler

Take a .roc file and compile into an executable binary. See compiler/README.md for more information.

The compiles includes the following sub-crates;

  • roc_alias_analysis TODO - Need assistance
  • arena-pool TODO - Need assistance
  • roc_build TODO - Need assistance
  • roc_builtins provdes the Roc functions and modules that are implicitly imported into every modulesee. See README.md for more information.
  • roc_can TODO - Need assistance
  • roc_collections TODO - Need assistance
  • roc_constrain TODO - Need assistance
  • roc_debug_flags TODO - Need assistance
  • roc_derive provides auto-derivers?
  • roc_exhaustive provides exhaustiveness checking for Roc
  • roc_fmt TODO - Need assistance
  • roc_gen_dev provides the development backend to generate Roc binaries extremely fast. See README.md for more information.
  • roc_gen_llvm provides the LLVM backend to generate Roc binaries.
  • roc_gen_wasm provides the WASM backend to generate Roc binaries. See README.md for more information.
  • roc_ident provides identifiers
  • roc_intern provides generic interners for concurrent and single-thread use cases.
  • roc_late_solve provides type unification and solving primitives from the perspective of the compiler backend.
  • roc_load used to load a .roc file and typecheck
  • roc_load_internal TODO - Need assistance
  • roc_module TODO - Need assistance
  • roc_mono TODO - Need assistance
  • roc_parse TODO - Need assistance
  • roc_problem provides types to describe problems that can occur when compiling .roc code
  • roc_region TODO - Need assistance
  • roc_target provides types and helpers for compiler targets such as default_x86_64
  • roc_serialize provides helpers for serializing and deserializing bytes
  • roc_solve see Ambient Lambda Set Specialization for more information on how polymorphic lambda sets are specialized and resolved in the compiler's type solver.
  • roc_solve_problem provides types to describe problems that can occur during solving
  • roc_str provides Roc styled collection reference counting. See README.md for more information.
  • test_derive TODO - Need assistance
  • test_gen containes all of Roc's generation tests. See README.md for more information.
  • test_mono TODO - Need assistance
  • test_mono_macros TODO - Need assistance
  • roc_types TODO - Need assistance
  • roc_unify TODO - Need assistance

Roc Docs roc_docs

Provides the functionality for generating html documentation from Roc files.

Roc Docs CLI roc_docs_cli and roc-docs binary

Provides a binary that is only used for static build servers.

Roc Editor roc_editor

Provdes the functionality for editing Roc files. See README.md for more information.

Roc Error Macros roc_error_macros

Provides macros for consistent reporting of errors in Roc's rust code.

Roc Glue roc_glue

The roc_glue crate generates rust code to connect a Roc app with a rust platform. This tool is not necessary for writing a platform in another language, however, it's an added convenience for rust platform devs.

Roc Highlight roc_highlight

Provides syntax highlighting for Roc by transforming a string and to markup nodes.

Roc Surgical Linker roc_linker

Provides the Roc surgical linker which linkes platforms to Roc applications. See README.md for more information.

Roc REPL CLI roc_repl_cli

Provides the command line interface functionality for the REPL.

Roc REPL Eval roc_repl_eval

Provides the functioanlity for the REPL to evaluate Roc expressions.

Roc REPL Expect roc_repl_expect

TODO - Need assistance

Roc REPL Test repl_test

TODO - Need assistance

Roc REPL WASM roc_repl_wasm

Provides a build of the REPL for the Roc website using WASM. See README.md for more information.

Roc Reporting roc_reporting

TODO - Need assistance

Roc Std Library roc_std

Provides Rust representations of Roc data structures.

Roc Test Utilities roc_test_utils

Provides testing utility functions for use throughout the Rust code base.

Roc Tracing roc_tracing

Provides tracing utility functions for tracing various executable entry points.

Roc Utilities roc_utils

Provides assorted utility functions used all over the code base.

Vendored Code ./vendor/

These are files that were originally obtained somewhere else (e.g. crates.io) but which we needed to fork for some Roc-specific reason. See README.md for more information.

Roc WASI Libc wasi_libc_sys

Provides a Rust wrapper for the WebAssembly test platform built on libc and is primarily used for testing purposes.