Re:Jupyter switches to C++ kernel and widgets
by T-A on Friday February 08, 2019 @10:36AM
(#19115136)
Read the whole article. It starts by introducing xeus and xeus-cling for those who don't already know about it, then gets to the subject of the title, xeus-python, which is based on xeus and, indeed, written in C++:
Re:Jupyter switches to C++ kernel and widgets
by drmeister on Friday February 08, 2019 @09:57AM
(#19114703)
Nice - I think we will make the switch to this.
We wrote a Common Lisp kernel for Clasp (Common Lisp system that interoperates with C++ and uses LLVM as the backend -https://github.com/clasp-developers/clasp)
We implemented ipykernel and ipywidgets in Common Lisp by translating the Python code. I think we could switch to Xeus and lower the maintenance burden and contribute to Xeus.
Re:Jupyter switches to C++ kernel and widgets
by martinRenou1 on Friday February 08, 2019 @11:02AM
(#19115443)
The title is wrong here. We don't claim that xeus-python will replace IPython. IPython/IPykernel has plenty of great features and xeus-python covers just a small portion of it.
Re:Jupyter switches to C++ kernel and widgets
by mistrial9 on Friday February 08, 2019 @10:28AM
(#19115059)
hmm no disrespect intended but .. this line of the article jumps out .. "C++ is a good choice for a standard implementation of the protocol, it is a common denominator of most of the languages out there, it has a massive developer community and is widely adopted in the industry for performance middleware applications."
AFAIK the linking characteristics of C++ are pretty bad, since the symbols are mangled in a compiler-specific way, no?
If a small library implements a protocol for any new kernel to re-use, wouldn't it be better to use a language that results in stable external symbols, for linking ?
There is however a kernel for C++ that you can try here: https://mybinder.org/v2/gh/QuantStack/xeus-cling/stable?file... if interpreted C++ is your thing :)
https://github.com/QuantStack/xeus-python
This bug is prohibitive enough I suspect it will be a deal breaker for the majority who want to use this kind of tech.
AFAIK the linking characteristics of C++ are pretty bad, since the symbols are mangled in a compiler-specific way, no?
If a small library implements a protocol for any new kernel to re-use, wouldn't it be better to use a language that results in stable external symbols, for linking ?
extern "C"
Having said this, for C++ there is extern "language" {}, with extern "C" {} being the most common.
This is a new lightweight option that drops some of the magic in favor of flexibility.