PTR Changelog 2017-05-03

  • Dev Team

    This post describes changes on the Public Test Realm.

    • Updated runtime Node.js version to 7.9.0 (with V8 5.5).
    • (#c9f0476) Runtime virtual machine now uses breakOnSigint feature. Now CPU limit reached error messages have three types:

      • Script execution timed out - when the soft timeout is fired
      • Script execution has been interrupted - when SIGINT signal received
      • Script execution has been interrupted with a hard reset - when SIGKILL signal received (runtime process restart).

      These differences are mostly for informational purposes and don’t affect anything currently.

  • Culture

    Nice! A new v8 engine under the hood. Literally .

    I like the changes you made to the messages. I do have a personal request:
    Could you make it possible to store the latest error message in Game. ?

    This way we can programatically report them using Game.notify, or log then in thrid party applications.

    I'd love to have the following information in the last error:

    Tick number
    Datetime of the error
    Stacktrace (on user script error)
    Name of the host the script

    I'd love to use this information to crowdsource data on errors/exceptions. We could find patterns about system exceptions this way.

  • If your code uses ES6 features the PTR should be better on your CPU.

    Of course I expect everyone will need to reset their CPU expectations when this release happens.

  • Culture

    Just a heads up that the performance chart shared by K_C is pretty outdated- it's using Node 7.3 instead of 7.9, and there have been a lot of performance improvements since there. I've asked the upstream project to run it again ( ).

  • I have high hopes. Anecdotally the current steam client of the server (Nodejs 6.?) gave me a much better tickrate than the latest node.

    This isn't the end of the line as far as observations go, so I hope that we see improvements to the core which go along with the tech upgrade.

  • Does this mean that we can put something like:

    process.on('SIGINT', () => {
      console.log('Received SIGINT.  Press Control-D to exit.');
    /* User Code to save state here */

    in our code and save whatever we like to Memory, then on the next Tick, check for it and do something?

    Code from

    This comment is a little confusing (from breakOnSigint ), could someone explain it a little better: "Existing handlers for the event that have been attached via process.on("SIGINT") will be disabled during script execution, but will continue to work after that." [emphasis added]


  • Dev Team

    Player code doesn't have access to such system-level things.

  • YP

    I guess node won't updated with the planed terminal deployment next week?

    While I'm very lucky with the hard reset thing (usually once a day or so) this morning I got hit and it took about 5500 cpu out of my bucket ,)

    what's very interesting is that it looks like the tick before was reported a secont time after 10 seconds to the client. (19027948) ,,, I'm using a client connection that watches a memory object to export the stats. Not sure if thats helping.

  • Dev Team

    We're testing Node.js 7.5.0 on the PTR now, it doesn't have async functions enabled.