AI prompts
base on The Nature Programming Language # Nature Programming Language
A general-purpose open-source programming language and compiler designed to provide developers with an **elegant and concise** development experience, enabling them to build secure and reliable cross-platform software **simply and efficiently**.
## Features
- ✓ Simple, natural, and consistent syntax design
- ✓ No dependency on llvm and VM, compiles directly to target platform machine code and supports cross-compilation.
- ✓ Simple deployment, purely static linking based on musl libc, no additional dependencies, good cross-platform characteristics
- ✓ Comprehensive type system with support for generics, union types, interfaces, null-value safety, etc.
- ✓ High-performance GC implementation with a very short STW (Stop The World)
- ✓ High-performance shared-stack concatenation implementation, capable of millions of concatenation switches per second
- ✓ Built-in libuv to handle IO event loops in collaboration with the concatenators
- ✓ High-performance runtime and compiler based on a pure C implementation
- ✓ Modularity and package management system npkg
- ✓ Built-in implementations of common data structures and standard libraries.
- ✓ Use try+catch for error handling, match for pattern matching, channel for concurrent communication, select for concurrent processing.
- ✓ Follow the system ABI, built-in libc, you can directly call the C language standard library functions to accelerate code development
- ✓ editor lsp support
- ✓ Asymptotic GC for manual memory management.
- ○ Test DSL, efficient and stable utilization of AI code.
- ○ macho cross-platform linker (lack of macho linker currently prevents cross-compilation on darwin platform)
- ○ Collaborative scheduling system
- ○ Cross-platform compilation support for wasm and risc64 platforms.
- ○ Compile to readable golang programming language.
## Project Status
The nature programming language has reached a usable version, and the syntax APIs are basically stable, there will not be any drastic changes before version 1.0, but there are some minor syntax changes.
The current version of nature source code supports compilation on the following target platforms
- linux/amd64
- linux/arm64
- darwin/amd64
- darwin/arm64
nature includes a set of test cases and a standard library to test the usability of the syntax, but it has not been tested on a medium to large scale project, and so there are still many bugs.
Major work in the next versions of The main work is
- Standard library refinement
- Gathering user feedback
- Project validation and bug fixes
- Refinement of language features
Official website: [https://nature-lang.org](https://nature-lang.org)
## Design Philosophy
golang is the programming language I work with. It has a simple syntax, a very good and high-performance cross-platform compiler and runtime implementation, an advanced concurrent design style and high-performance network I/O, and good support for standard libraries. However, there are some inconveniences
- The syntax is too simple, resulting in a lack of expressiveness.
- The type system is not well developed, lacking nullable, enumerated parameters, generic types (which exist now), etc.
- Cumbersome error handling mechanism
- Automatic GC and preemptive scheduling are excellent, but they limit the scope of golang.
nature is designed to be a continuation and optimization of the golang programming language, and to pursue certain differences, as described in the Features section.
Based on the existing features of the nature programming language, it is suitable for game engines and game development, scientific computing and AI, operating systems and the Internet of Things, and web development.
## Install
Download and extract the natrue installer from [releases](https://github.com/nature-lang/nature/releases) (note the correct permissions). Move the extracted nature folder to `/usr/local/` and add the `/usr/local/nature/bin` directory to the system environment variable.
> If you need to install into another directory you need to manually set the NATURE_ROOT environment variable to the corresponding directory
Run the `nature -v` command to check the version, and run the `nature -h` command to check the help
```sh
> nature -v
nature v0.5.0 - release build 2025-05-01
```
create a main.n file
```js
import fmt
fn main() {
fmt.printf('hello nature')
}
```
compile and execute
```sh
> nature build main.n && . /main
hello nature
```
---
## Documentation
Quick start [https://nature-lang.org/docs/get-started](https://nature-lang.org/docs/get-started)
Syntax documentation [https:// nature-lang.org/docs/syntax](https://nature-lang.org/docs/syntax)
Standard library documentation [https://nature-lang.org/stds](https://nature-lang.org/stds)
Try in browser [https://nature-lang.org/playground](https://nature-lang.org/playground)
LSP https://github.com/nature-lang/nls Reference README.md
## Project examples
1. [parker](https://github.com/weiwenhao/parker) Lightweight packaging tool
2. [llama.n](https://github.com/weiwenhao/llama.n) Llama2 nature language implementation
3. [ tetris](https://github.com/weiwenhao/tetris) Tetris implementation based on raylib, macos only
4. [playground](https://github.com/weiwenhao/playground) playground server api implementation
More syntax examples https://github.com/nature-lang/nature/tree/master/tests/features/cases
## Contribution guidelines
https://nature-lang.org/docs/contribute
## License
The source code for the compiler frontend, backend, and runtime of this project is restricted by the Apache License (Version 2.0). Nature source files (.n) such as standard libraries included in the current project use the MIT license.", Assign "at most 3 tags" to the expected json: {"id":"2615","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"