pocketpy/docs/gsoc/ideas.md
2024-02-06 09:44:24 +08:00

2.1 KiB

icon order label
light-bulb 0 Project Ideas

Implement pybind11 for bindings

  • Difficulty Level: 5/5 (Hard)
  • Skill: Advanced C++ with metaprogramming; Python
  • 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
  • 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
  • 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.