-
Notifications
You must be signed in to change notification settings - Fork 160
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
Catch the engine(s) up to TeXLive 2020.0 #666
Conversation
There is a lot going on here so I hope that I got it all right. There is new code relating to CMaps that alters the PDF output, so unfortunately it does not seem practical to try to make it so that the new code can pass the existing PDF-output test suite.
Current status: new xdvipdmx passes the test suite on my Linux laptop. We'll see how it fares in the CI battery ... |
Codecov Report
@@ Coverage Diff @@
## master #666 +/- ##
==========================================
- Coverage 46.30% 46.29% -0.01%
==========================================
Files 132 133 +1
Lines 59137 60331 +1194
==========================================
+ Hits 27386 27933 +547
- Misses 31751 32398 +647
Continue to review full report at Codecov.
|
Hmm, this causes a bunch of SIGABRTs and SIGSEGVs: I'll add the tectonic-on-arXiv bot to this repo to simplify tracking down these issues. |
Windows vcpkg builds are current failing due to an unrelated issue: microsoft/vcpkg#13286, addressed by microsoft/vcpkg#13298 . edit: Looking more closely, the relevant PR seems to be stalled. Not clear what the solution is going to be since it seems that the available versions of Windows just don't support TLS 1.3, which msys2.org is now requiring. |
@Mrmaxmeier OK, I installed the app on this repo. Do I need to do any further configuration? |
Compared to xdvipdfmx this is a *much* smaller delta. Just two small modifications. Yay.
No. It's supposed to just work ™️ after installing. The whole thing is pretty hacky at the moment though and I'll need to manually add each fork for it to pull the new commits. EDIT: This doesn't work :/ |
@Mrmaxmeier Should I just rename this branch? That feels like it would be the most TeX-esque solution ... |
I'll fix it in the bot. The GitHub API for custom checks has probably improved a bunch since I hacked it together. |
Not much new here. Omitted the conversion of various #ifndef/#define header guards to `#pragma once` due to (entirely hypothetical) concerns about portability.
Very little new here: - Instead of exiting when buffers fill up, increase their sizes and keep on going. - Avoid adding redundant filename extensions in some outputs.
Looks like it's running now, super cool! |
As I recall, the concrete values of the enum options here need to stay in sync with other parts of the engine. I'm not 100%, but can't hurt to keep the values consistent with what they were before the catch-up.
This typo is upstream.
Transcription error.
@Mrmaxmeier There was one big typo that caused the vast majority of the regressions. Now there are only a handful, but I can't reproduce them locally — my build of the CLI program handles them successfully. Do you have a sense of what the might be going on if your tool reports internal errors that don't reproduce in the CLI? |
The CI bot runs release builds in a Ubuntu 20.10 docker. Reproducability issues are probably either different system libraries (It'd be nice statically link harfbuzz) or some form of UB.
|
- Tweaks to how font design sizes are mapped to TeX values - Instead of having a separate `prim_eqtb`, merge it into the main eqtb. - This forces us to bump the format file serial number. - New primitives, mostly unimplemented: - \creationdate - \elapsedtime - \expanded - \filedump - \filemoddate - \filesize - \normaldeviate - \randomseed - \resettimer - \setrandomseed - \uniformdeviate - Some uc_hyph tweak deep in the linebreaking algorithm - print_raw_char when using pseudo selector in print_char - New magic numbers used in PDF last x/y position accounting, instead of cur_[hv]_offset. - Don't print_raw_char in show_context with trick_buf - Back up cur_cs in scan_keyword - Handle XETEX_MATH_GIVEN in scan_something_internal - If encountering an unexpandable primitive in scan_something_internal, try to deal with it. - Ditto for scan_int. - Do something different with active chars in str_toks_cat - Rework how file names are scanned. - Defend against undefined eTeX registers in main_control - Back up cur_cs in compare_strings.
Note that the `trip` reference outputs do not need updating if the `print_char` and `show_context` changes are reverte.
Almost there! We just need to fix the Arxiv regressions and actually implement the new I/O primitives. |
Looking at the diff in the update to TeXLive 2020.0, I think the upstream changes introduced some bugs.
@Mrmaxmeier looks like the crashes are now fixed! |
The only one that needs implementing is \filemoddate, although these need actual testing as well.
ce7bf30
to
a0fdaa1
Compare
This requires us to add a new feature to the I/O API and so involves touching a lot of code. In particular, I think that it is probably important for the memory I/O layer to produce meaningful-ish mtimes, which adds some complexity there. The `InputFeatures` trait has added a new method, `get_unix_mtime`, to support this primitive. It has a default implementation to return `Ok(None)`, which indicates that the input does not have a well-defined modification time. **BREAKING CHANGE** In order to implement file modtimes for the memory I/O provider, we need to add more data to its data structures, breaking the APIs for users of its `files` field. This is a very clear signal that this API should be cleaned up and made more future-prof. That being said, migration should be pretty easy: instead of `files` containing a bunch of `Vec<u8>`s, it now contains a bunch of `MemoryFileInfo` structs that contain a `Vec<u8>` field named `data`. So you just need to add some `.data` field accessors to existing code.
@Mrmaxmeier The last few builds generated internal errors for the tectonic-on-arXiv bot :-( Did I break your service? |
It looks like it is going to take a while for vcpkg to get its act together. Tracking issue created: tectonic-typesetting#668
I believe that this is now ready to go! Modulo the fact that we should always have more test coverage and the Arxiv tester seems to be broken at the moment. |
Discovered in the course of tracking down issue tectonic-typesetting#478. XeLaTeX works because it generates a "PK" font file on the fly. We can't do that. More research needed to understand if we should even try.
Reran the TeXLive 2020 bundle tests with this version of the engine. Ten more classes compile now, and there are no new failures, so that's a good sign. |
Going to try to retrigger the tectonic-on-arXiv bot since it looks like it may have been fixed a few hours ago. |
At long last, let's start the work to catch the Tectonic engine implementations up to TeXLive 2020.0.
CC @Mrmaxmeier @crlf0710 tectonic-typesetting/tectonic-staging#8