The programming language for scalable software development
Pen is designed for software development by a large number of people and/or over a long time.
To make such development efficient, it focuses on:
- Everyone can learn the language and participate in actual development quickly.
- Developers can focus on application logic rather than ever-changing implementation details.
- Programs written in the language can be ported to different platforms.
- Its syntax and type system are simple and easy to learn.
- Its minimal language features keep codes comprehensive and consistent.
- System APIs are always injected into entry points of applications.
- That isolates and protects application logic from implementation details for both maintainability and portability.
- Developers can define their own system APIs and build applications on top of them.
Data types are checked at compile time so that developers can catch errors earlier.
All values are immutable, which leads to predictable and testable codes.
Functions are pure; they work just like math functions unless developers inject side effects explicitly.
Errors are merely data. Its special syntax provides a convenient way to handle errors inside each function.
The compiler and runtime support different CPU architectures, operating systems, web browsers and WASI.
Its Rust/C FFI provides interoperability with other languages.
Unit tests are deterministic to realize reliable continuous integration.
Every function can be asynchronous while called in the same way as synchronous ones.
The runtime and library provide tools for thread-safe parallel computation that leverage multi-core CPUs.