I have a system currently written in Python that can be separated into backend and frontend layers. Python is too slow, so I want to rewrite the backend in a fast compiled language while keeping the frontend in Python, in a way that lets the backend functionality be called from Python. What are the best choices to do so?
I've considered cython but it's very limited and cumbersome to write, and not that much faster. From what I remember of Boost Python for C++, it's very annoying to maintain the bridge between languages. Are there better choices? 
My main factors are:

speed of execution
speed of compilation
language is declarative
I would disagree about Boost::Python. It can get cumbersome when wrapping an existing c++-centric library and trying not to change the interface. But that is not what you are looking to do. 
You are looking to push the heavy lifting of an existing python solution in to a faster language.  That means that you can control the interface. 
If you are in control of the interface, you can keep it python-friendly, and bp-friendly (IE: avoid problematic things like pointers and immutable types as l-values) 
In that case, Boost::Python can be as simple as telling it which functions you want to call from python.
Language choices for writing very fast abstractions interfacing with Python?