Over the past few weeks, we've been hard at work improving DMOJ's backend for a better user experience, and today we've finally made these changes live.
Server Upgrades
The servers backing DMOJ have not received upgrades in years, and were constantly dangerously close to hitting CPU and memory limits.
After some particularly successful Black Friday shopping, we're happy to announce we've doubled the resources available to our frontend servers, and octupled those of our database. We've also split up several other services onto smaller machines dedicated to running them. Judging servers have not been updated, so expect no change in submission runtimes.
All servers have also been migrated from a New York datacenter to one in Montréal, so Canadian users should experience improved connectivity (international accesses should not be affected significantly). In our tests, the new servers render pages 20-40% faster than the old ones, and leave a lot of room for increased load during peak times.
Since this required massive changes to our networking setup behind-the-scenes, it's possible that there might be slight issues in the next few days.
New Facebook-friendly CDN
We've heard reports of DMOJ links being blocked on Facebook and Messenger, and have taken steps to resolve this. Previously, resources were being served off of dmoj.ml (for site resources) and camo.dmuser.ml (for SSL-proxied user content) — as of recently, Facebook blocks sites linking .ml TLD domains. As a result, we now serve off of dmoj.algome.me and camo.algome.me, respectively. If you use NoScript, uMatrix, or similar script-blocking browser plugins, you will have to allow these domains to use DMOJ.
Facebook issues should clear up within a few days.
Minor Judge Changes
The judge has seen a lot of work recently, largely for improving stability. Among others,
- it has been ported to Python 3, so there might be some issues popping up on complex problems
- it now disables address-space layout randomization on submissions (this means segfaults should be more reproducible)
- the sandbox permissions have been tweaked
- all JVM-based languages (Java, Kotlin, Groovy, etc.) now use
-XX:+UseSerialGC
- Java 10 support has been added
- Java 7 support has been dropped, and all Java 7 submissions have been remapped to Java 8
- C11 support has been added
- Scala can be used with
extends App
now
- support for R has been dropped