-
-
Notifications
You must be signed in to change notification settings - Fork 75
Update Jobe server gcc/Ubuntu/jdk #676
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Update Jobe server gcc/Ubuntu/jdk #676
Conversation
This sounds promising if it will work for Runestone more broadly. Perhaps we need a wider conversation on philosophy. I believe that with a language as old as C++ and with some of our alumni likely working with legacy code, students need to see the best and most essential of both older and newer C++. |
gcc-13 was released in April of 2023, so I don't think we are on the bleeding edge of anything here, and I feel like we should try to keep relatively recent. Although Java is far behind, I think that has to be that way due to the College Board and the APCSA curriculum. Do we know of any deprecations or backward incompatibilities that might break current code? |
I don't know of any backwards compatibility issues. Books can set I interpreted Jan's comment as more about book updates/conversions. In the case of a single author that isn't a big deal. But for anything that is a semi-shared project there might need to a discussion about when to use fancy new tools and when to teach older methods. |
OK, I'll let the C++ brain trust take the lead on that conversation. I would imagine that if you and Jan and Jason are in alignment then I'm happy. Tagging @wrigjl |
I don't think anything will break in thinkcpp or cppds, and anything that does can be easily fixed. |
@barbarer Any thoughts on this? |
This got me thinking though, there should be a way of extracting the source and ensuring that it compiles. It might make a good project for an undergrad/TA to:
|
We're getting increasingly off topic, but expanding on Jason's suggestion... I've found it helpful to factor out code samples into separate actual code files that then get included in pretext with something like:
It eliminates the need for CDATA or lots of So part of the student job could be to start by refactoring all the samples that are intended to be runnable programs to point to external files. |
I am fine with this, but since C++ was standardized I believe that many C++ compilers have become more stringent about non-standard code, so, yes, of course, it is about textbooks, but also about not breaking them without notice, especially not in the final months of a term. I would expect all textbooks are very largely using standards complete code, but there might be sections that don't for educational reasons, and I would hate to see them break if an author was not keyed into this Github conversation or a Discord user. |
So, maybe best to put a pin in this as far as merging goes until things have wrapped up for the year? Merging towards the end of may should be pretty safe. |
Yes, fine to wait. 99.99% sure the current version of GCC on Jobe defaults to Ideally every author sets compiler options for their book. In PreTeXt you can add something like this to your docinfo and make sure you are getting the version of the standards you want:
|
c8dfb5c
to
1bc9f3d
Compare
After more testing of gcc13 vs 14 I strongly prefer moving to 14. Doing so painlessly requires updating the Jobe server to run on Ubuntu 24.04 (from 22.04). Updating to 24.04 would require updating openjdk from I have tested openjdk-21 against the Pretext Sample Book and against CSAwesome. I could not find any issues in CS Awesome and everything that currently works in PTXSB still works (a number of the java programs in it have existing issues). I updated the PR to make these upgrades. I could change it keep Ubuntu 22.04 and thus openjdk-18, but that would require building gcc from source which is a multi-hour process. I'll ping authors on Discord re: jdk version. But it seems like it would make sense to move to an LTS release. |
I agree, we don't want to let JOBE stagnate, and I think the new curriculum for CSA including changes to CSAwesome use feature from 21. |
GCC 13+ is required for using some of the nice C++20 features - in particular
std::format
.This install gcc & g++ v13 and sets them as the default when invoking
gcc
org++