Autobahn Python 18.4.1 / new WAMP-SCRAM authentication

#1

Hi all,

I am happy to announce the release of Autobahn Python 18.4.1!

https://pypi.python.org/pypi/autobahn/18.4.1
https://autobahn.readthedocs.io/en/latest/changelog.html

This includes quite a bunch of cool things:

1) The worlds first implementation of WAMP-SCRAM =)

WAMP-SCRAM is a new authentication method for WAMP that has a number of
advantages compared to WAMP-CRA (within its class of auth methods ..
that is shared, long-term, user secret):

http://wamp-proto.org/static/rfc/draft-oberstet-hybi-crossbar-wamp.html#wamp-scram

The spec text is really great work, done by Emile, with lots of feedback
and input from other WAMP implementors:

https://github.com/ecorm

The actual lines of code (in Autobahn Python and Crossbar.io - a release
there is pending as well), created by Meejah:

https://github.com/meejah/

···

---

2) WAMP component API

The new component based, higher level WAMP API again has gotten more
production features and robustness, and - documentation! yay=)

Here:

https://autobahn.readthedocs.io/en/latest/wamp/programming.html#application-components

We'd love to hear your feedback on that!

---

3) Docker

The complete Docker image tooling for dozens of images now in this repo.

We want to expand on that, and make regular releases in 2 binary package
formats:

- Docker
- snaps

(in all architecture/run-time/framework flavors)

Bringing the existing tooling over here is a step in this direction.

---

4) Native Vector Extensions (NVX)

Longer ago, I extensively analyzed performance of Autobahn Python (and
Crossbar.io) using vmprof on PyPy, as well as Linux perf.

What I found where 2 places where lots of CPU cycles are spent:

- WebSocket processing (XOR masking and UTF8 checking)
- JSON, and general serialization and deserialization

I then sat down and wrote some vectorized SIMD code using C compiler
intrinsics, and made that available from Python via cffi.

What I found is that the speedups that can be achieved (vs pypy!) are
huge on specialized code. Anyways, I lost interest/time, but now I
decided to contribute that code as OSS to revive it.

The UTF8 validator is there .. just needs wiring up:

https://github.com/crossbario/autobahn-python/blob/master/autobahn/nvx/_utf8validator.c

The XOR masking: I have that somewhere else - just need to find it again.

---

Anways. Puh. That's it for now! Please help spread the word;)

Cheers,
/Tobias

0 Likes

#2

tiistai 10. huhtikuuta 2018 0.45.10 UTC+3 Tobias Oberstein kirjoitti:

  • WebSocket processing (XOR masking and UTF8 checking)

  • JSON, and general serialization and deserialization

I don’t know what can be done on PyPy, but looks like rapidjson can overall be a bit faster than ujson? http://python-rapidjson.readthedocs.io/en/latest/benchmarks.html

0 Likes