copapy/README.md

33 lines
1.9 KiB
Markdown
Raw Normal View History

2025-09-29 21:11:54 +00:00
# State of the project
2025-05-25 21:23:02 +00:00
2025-09-29 21:11:54 +00:00
Development is in a very early stage. Only very few components are in a working state.
2025-05-25 21:23:02 +00:00
2025-09-29 21:11:54 +00:00
# Introduction
2025-05-25 21:23:02 +00:00
2025-10-15 20:56:59 +00:00
Copapy is a python based embedded domain specific language (eDSL) with a copy & patch compiler. It compiles to machine code. It uses the python interpreter for compilation. It generates a directed graph of variables and operations. The compiler generates machine code by composing pre-compiled stencils derived from C code with gcc -O3.
2025-05-25 21:23:02 +00:00
2025-10-15 20:56:59 +00:00
For code execution a executable or library receives the composed machine code, data and patch instructions. The patch instructions are used to correct memory address offsets.
2025-05-25 21:23:02 +00:00
2025-10-15 20:56:59 +00:00
The Project targets applications that profit from fast implementation (e.g. prototyping) and require realtime with low latency as well as minimizing risk of implementation errors not cached during compile time. This applies primarily for applications interfacing hardware, where runtime errors might lead to physical damage. For example robotics, embedded systems and control systems.
2025-05-25 21:23:02 +00:00
2025-10-15 20:56:59 +00:00
The language aims to be:
- Fast to write
- Easy to read
- Type safe
- Having a predictable runtime
- Turing-complete only during compile time
- No runtime errors
2025-09-29 21:11:54 +00:00
- Immutable types
2025-05-25 21:23:02 +00:00
2025-10-15 20:56:59 +00:00
# How it works
2025-05-25 21:23:02 +00:00
2025-09-29 21:11:54 +00:00
## Compilation
The Compilation step starts with the directed graph of variables and operations generated by the python interpreter.
2025-05-25 21:23:02 +00:00
2025-09-29 21:11:54 +00:00
## Tooling
Because the language is an embedded language, it can relay heavily on python tooling. While copapy is static typed, it uses Python to derive types during compile time wherever possible. It can get full benefit from python type checkers, to catch type errors even before compilation. Python and Copapy code can be combined seamlessly. Python acts as macro-language for the Copapy program. However, the project is designed in a way that the distinction has typically not to be considered by the programmer.
2025-05-25 21:23:02 +00:00
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.