Release Notes

Public

5.0.44.764: Jul 15 2016

New

Plastic network protocol.

This new release of Plastic SCM 5.0 adds official support for the new 'Plastic network protocol' (a.k.a. 'plasticproto').

In short, this release makes 5.0 clients compatible with 5.4 servers.

Plastic SCM 5.0 clients upgraded to BL764 will be compatible with 5.4.16.765 servers and later.

The 5.0 client automatically detects the protocol supported by the server. It tries to connect using 'plasticproto' first, and if it fails it falls back to remoting.

The main features of plasticproto are:

* Improved API compatibility. Our intention from now on is to keep all clients and servers compatible (from this release onwards). It means we get rid of breaking compatibility on major releases as we did in the past. All of this will greatly simplify deployment, especially on big teams. Users will be able to upgrade to a newer major release even if not the team members upgrade at the same time. Compatibility checks now happen on a per method basis. Methods can be versioned independently, which helps us evolving the API faster while not forcing all users to upgrade.

* Reduced call overhead: the protocol is much more compact than before, because it is lower level and designed ad-hoc for Plastic. As an example: a simple "cm lrep" request (just the request, not including the answer) was about 400 bytes before. Now it is about 50 bytes when a new socket connection is opened, and only 2 bytes if a connection is reused.

* Increased portability. The new plasticproto makes it simpler to port to new frameworks like .NET Core and implement native clients on mobile devices. This is because it doesn't rely on complex RPC like before, but just on plain sockets.

* Better performance: the lighter API helps during both performance and scalability tests. While the initial version is not dramatically faster than the older on LAN, the plan is to use it to greatly improve data transfer.

A little bit of history:

* For years, communications between Plastic client and servers (including communications between servers) happened through .NET/Mono Remoting.

* In fact, it was a heavily customized remoting layer, improved for scalability, performance, memory reduction and faster serialization, among others.

* It allowed us to run circles around other version controls (more here: https://www.plasticscm.com/version-control-for-games.html#performance-results) but it had issues regarding major version compatibility.

* We had to freeze the API to keep it compatible, and per-method versioning was not easily doable.

How to enable plasticproto:

Simply install a new 5.4 server on release 5.4.16.765 and you will see how you can cleanly connect from a 5.0.44.764 client in 5.0.

Remarks: 5.0 clients do NOT need plasticpipeprotocol.conf file unlike 5.4 clients.