* KCL: Convert angledLineThatIntersects to use kwargs * Update KCL tests and samples * WIP * Fix tsc and lint errors * Fix missing cases * Fix modifyAst unit tests * Fix sketch unit tests * Fix std unit tests * Fix to not have extra docs * Fix more unit tests * Fix bench test * Fix e2e tests to use new kw args * tiny lint * Fix adding constraint from UI to work * Fix to use labeledArg constraints and use the correct order of args * Fix selections e2e test * Fix e2e test expectation App was working as expected, but the e2e test was expecting the old code, not the new code. * Fix order of constraints in unit test * Update docs * Fix KCL formatting * Update output --------- Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
kcl-lib
Our language for defining geometry and working with our Geometry Engine efficiently. Short for KittyCAD Language, named after our Design API.
Contributing a standard library function
We've built a lot of tooling to make contributing to KCL easier. If you are interested in contributing a new standard library function to KCL, here is the rough process:
- Open just the folder in your editor of choice. VS Code, for example, struggles to run rust-analyzer on the entire modeling-app directory because it's such a turducken of TS and Rust code.
 - Find the definition for similar standard library functions in 
./kcl/src/stdand place your new one near it or in the same category file. - Add your new code. A new standard library function consists of:
 - A 
pub asyncof the actual standard library function in Rust - A doc comment block containing at least one example using your new standard library function (the Rust compiler will error if you don't provide an example our teammates are dope)
 - A 
stdlibmacro providing the name that will need to be written by KCL users to use the function (this is usually a camelCase version of your Rust implementation, which is named with snake_case) - An inner function that is published only to the crate
 - Add your new standard library function to the long list of CORE_FNS in mod.rs
 - Get a production Zoo dev token and run 
export KITTYCAD_API_TOKEN=your-token-herein a terminal - Run 
TWENTY_TWENTY=overwrite cargo nextest run --workspace --no-fail-fastto take snapshot tests of your example code running in the engine - Run 
just redo-kcl-stdlib-docsto generate new Markdown documentation for your function that will be used to generate docs on our website. - Create a PR in GitHub.
 
Bumping the version
If you bump the version of kcl-lib and push it to crates, be sure to update the repos we own that use it as well. These are: