2.2 KiB
icon | order | label |
---|---|---|
light-bulb | 0 | Project Ideas |
Implement pybind11 for bindings
- Difficulty Level: 5/5 (Hard)
- Skill: Advanced C++ with metaprogramming; Python
- Mentor: blueloveTH
- Project Length: Medium (~180 hours)
pocketpy has provided a low-level API for creating bindings. It is fast, lightweight and easy to debug. However, it still requires a lot of boilerplate code to create bindings for complex C++ classes. The community has long expected a high-level API for creating bindings.
pybind11 is the most popular C++ library for creating Python bindings for CPython. A bunch of Python libraries are using it. pybind11 adopts a template metaprogramming approach to automatically generate bindings for C++ classes.
Our goal is to introduce a pybind11 compatible solution to pocketpy as an alternative way to create bindings for functions and classes. You can use C++17 features to implement it, instead of C++11 used in pybind11.
Add numpy
module
- Difficulty Level: 4/5 (Intermediate)
- Skill: Intermediate C++; Python; Linear Algebra
- Mentor: zhs628
- Project Length: Small (~120 hours)
Though pocketpy is designed for game scripting,
some people are using it for scientific computing.
It would be nice to have a numpy
module in pocketpy.
We know numpy
is a huge project.
Our goal is to implement a most commonly used subset of numpy
in pocketpy.
You can mix C++ and Python code to simplify the overall workloads.
Port secret labs' regex engine to pocketpy
- Difficulty Level: 5/5 (Hard)
- Skill: Advanced C++; Regular Expression; Algorithm; CPython Details
- Mentor: TBA
- Project Length: Medium (~180 hours)
pocketpy does not have re
module yet.
We have considered other regex engines, such as PCRE, RE2 and <regex>
in C++11. However, none of them is compatible with CPython's regex syntax.
Because CPython uses its special regex engine, a.k.a. Secret Labs' Regular Expression Engine.
In order to make pocketpy compatible with CPython in re
module,
we need to port this engine into pocketpy.