Languages update

Hello @TwoSteps, is there any news on the C# update before the next context?
There are really major changes in term of languages and performances compare to the version we have available in CG which is a few major version below…

We’ll try to update the languages before the next challenge (which should happen around April-May)

6 Likes

Thanks !

If it could be done, PHP 8.1 would be very appreciated.

1 Like

This will be awesome, rust is already on to 1.59, It would be nice to get a library or two also, like ndarray or similar, this is like numpy but for rust.

1 Like

Please consider also JAVA 15 at least 17 would be great (And it’s a long term release)

Thank you

I would be happy to contribute if I can get a bit of guidance in which repository I should start from :slight_smile:

2 Likes

There is a on-going project to have a common process for the update of languages between CoderPad, CG for Work and CG.
As I wrote before, the idea is to do an update before the challenge.
We have a meeting planned next week about this. I’ll know more at that time :crossed_fingers:

2 Likes

Seconding this. Rust (and other low-level/verbose languages) would be much more attractive to me if we had access to (at minimum) a linear algebra library (I’d personally much prefer nalgebra to ndarray as it’s more mature and has stronger/math-oriented abstractions, but either is fine). For bots I’ve been copy-pasting a custom minified library, but for puzzle solutions that’s not ideal.

Currently Python has a whole suite of math libraries (NumPy, pandas, SciPy), giving it not only linear algebra but stats, interpolation, and calculus/optimization, making it by far the most attractive language in terms of terseness, but one of the least attractive in terms of performance.

Also, if you were to add Julia in the future (:crossed_fingers:), which includes a lot of that stuff as part of the standard library, Python would no longer be alone in having access to strong math abstractions. Since Julia is also far faster than Python, being JIT-compiled, many other languages would become even less attractive than they are presently.

I’d argue that since linear algebra library code is largely boilerplate and low-level, it is not something that belongs in a “solution” to a puzzle. This is also a self-described “game” programming and training site, and in the real world, linear algebra routines are simply a prerequisite in any competent game dev or scientific programming environment, and largely deferred to pre-existing libraries written by specialists (BLAS, LAPACK, CUDA, etc.) not something implemented ad-hoc or without any abstraction whatsoever.

Many public solutions are written in a hacky, confusing, non-general way just to keep their length to a minimum in the absence of math libraries.

4 Likes

The idea is still to do an update before the challenge. Not sure of the versions targeted yet. I’ll share the info when it’s done.

Rust just released 1.60 Stable. (I should also mention edition = “2021”)
I think mag.py is right about nalgebra, I just want a standard linear algebra built in, and someone said ndarray earlier.

If you happen to upgrade to php 8.1, pls also add these to the config file:

zend_extension=opcache
opcache.enable=1
opcache.enable_cli=1
opcache.jit_buffer_size=64M
opcache.jit=tracing

Since you are considering updating most of the supported languages soon, could you consider making NUMBA available for Python ? That would be great to gain a bit of efficiency.
Fingers crossed… :slight_smile:

1 Like

Could you please update Golang to version 1.18?

It would be cool to update languages a bit before contest, to fix all problems before start.

1 Like

We can still hope…

And hopefully there won’t be too many problems.

This site is great at turning code into a game, but it only does that with major, ‘practical’, programming languages (e.g., Python, C, Javascript, Ruby, …). What if codingame added support for ‘esoteric’ (not practical) programming languages such as Befunge, Brainf*ck, and golfing languages like Vyxal. I haven’t been on this site for long, and this is my first post, so if this sounds like a dumb idea, feel free to let me know. I personally think that esolangs (as esoteric programming languages are known) are a fun part of coding, that while not practical, can help programmers understand the more low-level aspects of what a programming language actually is. There are thousands of esolangs, so it wouldn’t be reasonable for the site’s administrators (I don’t really know the ‘power structure’ of this website yet, so correct me if I’m wrong) to add them all. Possibly the site could add a way for users to add interpreters. Most esolangs are small, and interpreters are readily available. This system would allow people to add their own programming languages or esolangs that haven’t been included yet to the site.

We’ve just done a round of language updates. FAQ updated too

  • Bash : GNU Bash 5.0.3 => GNU Bash 5.1.16
  • C : gcc 10.2.1 mode C17 => gcc 11.2.0 mode C17
  • C++ : g++ 10.2.1 mode C++17 => g++ 11.2.0 mode C++17
  • C# : C# 7.0 (.NET Core 3.1.3) (no update)
  • Clojure : 1.10.3 - Oracle JVM 1.8 => 1.11.1 - Oracle JVM 1.8
  • D : DMD 2.096.0 => DMD 2.099.0
  • Dart : 2.12.4 => 2.16.2
  • F# : .NET Core 3.1.3 (no update)
  • Go : 1.17.1 => 1.18.1
  • Groovy : 3.0.8 - Oracle JVM 1.8 (no update)
  • Haskell : 8.4.3 (no update)
  • Java : 1.8.0_211 (no update)
  • Javascript : Node 14.16.1 => Node 16.14.2
  • Kotlin : 1.5.0 (no update)
  • Lua : 5.4.3 => 5.4.4
  • Objective C : Clang 11.0.1 => Clang 13.0.1
  • OCaml : 4.12.0 => 4.14.0
  • Pascal : Free Pascal Compiler 3.2.0 => Free Pascal Compiler 3.2.2
  • Perl : 5.32.1 => 5.34.0
  • PHP : 7.3.9 (no update)
  • Python 3 : 3.9.2 => 3.9.12
  • Ruby : 3.0.1 => 3.1.2
  • Rust : 1.51.0 (no update)
  • Scala : 2.13.5 (no update)
  • Swift : 5.3.3 (no update)
  • TypeScript : 4.2.2 => 4.6.3
  • VB.NET : .NET Core 3.1.3 (no update)

I know it’s very last minute before the challenge and that’s why a few languages were not updated. I’m sorry for that and hope it will please the impacted players.

Feel free to report here any weird issue that could be related.

4 Likes

Actually, running:
/usr/local/bin/rustc --version >&2
from a bash script returns:
rustc 1.60.0 (7737e0b5c 2022-04-04)
so it seems to be updated.

As a sidenote: while R, COBOL and Fortran are officially not supported, these languages are present on the virtual machine, so you can access them from bash.
For example, running:

/opt/coderunner/cobol/bin/cobc --version | head -1 >&2
gfortran --version | head -1 >&2
/opt/coderunner/R/bin/R --version | head -1 >&2

returns:

cobc (GnuCOBOL) 3.1.2.0
GNU Fortran (Debian 11.2.0-20) 11.2.0
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"

you can cat your R/Cobol/Fortran source to a file from bash, and run the compiler, then the compiled program. Yesterday I wrote my first ever Fortran code for a simple solo puzzle. Better late than never! :slight_smile:

2 Likes

I just checked on a whim due to that, and 1.60 features do in fact work, test code:

fn main() {
    std::sync::Arc::new_cyclic(|_| 0);
}

(compiles)

Indeed, it happened the day after the update.

Rust: 1.51.0 → 1.60.0

1 Like