Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
base repository: latex3/latex3
base: 2020-02-03
head repository: latex3/latex3
compare: HEAD
This comparison is big! We’re only showing the most recent 250 commits
Commits on May 07, 2021
The reason this shows oddly in the 2e test suite is
that we deliberately disable \AtBeginDvi there. We
therefore should also clear the shipout/firstpage hook to allow other code (like here) to use it without
disturbing the test suite.
Commits on May 10, 2021
The code in this commit uses non-standard category codes and as a result
will not work correctly if group_align_safe_begin: is expanded once and
after that tokens with category code 2 get normalized. This should be
rarely the case, but in \unravel this would break for instance. As a
result this code might be considered unstable.
Commits on May 11, 2021
We already had \clist_use:Nnnn and \clist_use:Nn.  This simply provides
feature parity for n-type comma lists.
As we need to get this to pass at the moment.
Commits on May 12, 2021
This also removes a string comparison \str_if_eq:eeTF which is slow in
LuaTeX, cf #174.
Commits on May 13, 2021
I dare not do the same for l3backend files (see #717) but it seems
like one just needs to change how \__kernel_sys_configuration_load:n
is defined: use \cctab_begin:N \c_document_cctab ... \cctab_end:
instead of  \ExplSyntaxOff ... \ExplSyntaxOn.  Alternatively we
could try basing \ExplSyntaxOn/Off on cctab, with extra handling of
the @ character.
Commits on May 14, 2021
)

Names with "if" as a second word are normally
conditionals, but using "bool" or similar would
risk confusion with etoolbox bools.  Here we are
talking about the result of \newif.
This speed up is not uniform, and depends on the length of the seq.
- empty seq: 1.5x slower.
- one item: 1.25x slower.
- 2 or 4 items: 1.1x slower.
- less than 10: same speed.
- 10-100: 1.1x to 1.2x faster.
- longer: 1.2x faster
So it is not a clear win.  However, I think speeding up the case of
long seq is still worth the moderate slow-down of mapping through
very short seq.
When these were written \prop_map_tokens:Nn did not exist.  Now that
\prop_map_tokens:Nn is reasonably fast, it is reasonable to have simpler
code there.
Commits on May 15, 2021
The speed up is around 2-8 times (largest for larger comma lists)
This means that \tl_set_eq:NN can be used to set a token list equal
to a comma list.  Strings also are token lists, but this was already
documented.
This file is not mentioned anywhere in the repository, and it doesn't
fullfil anymore the purpose described by its name (listing all expl3
functions) now that expl3 is built into the format.
Add silent benchmark variants; make results public
Commits on May 16, 2021
It was applied to a token list ending with a comma, which led to an
extra iteration.  The extra iteration turned out to fill data beyond
what was later read, but it is a bug waiting to happen.
Commits on May 18, 2021
This is actually just commented out, but it is sometimes helpful
to me when thinking about possible TeX-specific syntax extensions.
Commits on May 19, 2021
I'm not adding to this commit a couple of LuaTeX-specific l3kernel tests,
because they are due to line length and I plan to shorten a few of the
error messages to avoid that in more cases.
… again)

See commit 9a18a99 which had called it
\msg_info_term:nnnnnn
Commits on May 20, 2021
register pgfmxfp prefix
Commits on May 21, 2021
Many places had (explicit number) followed by \exp_stop_f:
from the time we had removed all integer constants \c_zero,
\c_one, ..., \c_sixteen etc.  Since we kept constants for
zero and one (under new names) we can replace 0 \exp_stop_f:
and 1 \exp_stop_f: by the faster constants.
Commits on May 29, 2021
The problem here is tricky. The older set-up had the value of "numerator-top-sep" as part of the restricted template, so it was always set. However, one of the top or bottom sep values have to be maxdimen to avoid an error. With restrictions actually working, we couldn't undo the global setting of the top-sep, so we were stuck. Thus here I've made that a setting which is applied to an instance, not a restriction.
Commits on Jun 01, 2021
\int_const:Nn is used before some of the e-type emulation dependencies
are defined (namely \token_if_protected_macro:NT), thus it does not work
if the engine doesn't have \expanded yet.  This breaks building the
LaTeX format when using new expl3 with old engines.
Commits on Jun 02, 2021
Commits on Jun 18, 2021
Commits on Jul 04, 2021
Commits on Jul 07, 2021
Commits on Jul 10, 2021
Commits on Jul 13, 2021
Commits on Jul 19, 2021
As it always produces a dim tuple, we will want it for
implementing higher-level material. This is easiest
to explain with a public name.
Commits on Jul 20, 2021
Commits on Jul 29, 2021
Commits on Aug 09, 2021
Slightly incorrect until the core functionality is in the kernel
Commits on Aug 14, 2021
Automatically create releases from Tags with GH Actions
Commits on Aug 26, 2021
Since the new version of expandable errors gives us fewer characters to
work with, the previous message was trimmed before the end in all cases.
Those retained are:
- Explicitly defined in l3kernel-extras
- Linked to l3kernel (l3fp errors)
Sufficient material is retained to support xparse/ltcmd.
Commits on Aug 27, 2021
As we clean out the build dir for each bundle,
we need to get the top-level versions. Might need
to adjust a bit to have the TDS-style ones available too.
Commits on Aug 30, 2021
Commits on Sep 08, 2021
Commits on Sep 16, 2021
Latex2e/gh569 [xparse] Add support for \NewCommandCopy
Commits on Sep 21, 2021
These are strings but token lists
Commits on Oct 17, 2021
Showing 1,088 changed files with 108,576 additions and 422,000 deletions.
@@ -0,0 +1,54 @@
# The test framework itself
l3build
#
# Required to build plain and LaTeX formats including (u)pLaTeX
latex-bin
luahbtex
platex
uplatex
tex
xetex
#
# Then get the rest of required LaTeX
amsmath
tools
#
# Assuming a 'basic' font set up, metafont is required to avoid
# warnings with some packages and errors with others
metafont
mfware
#
# Dependencies for tests that are not auto-resolved
bibtex
lualatex-math
#
# For the doc target and testing l3doc
alphalph
amsfonts
bookmark
booktabs
catchfile
colortbl
csquotes
dvips
ec
enumitem
epstopdf
epstopdf-pkg
everysel
fancyvrb
hologo
hyperref
lipsum
listings
makeindex
mathpazo
metalogo
oberdiek
pgf
psnfss
ragged2e
siunitx
times
underscore
units
@@ -0,0 +1,45 @@
# This workflow makes sure that there is always a cache present for the main branch.
# This cache can be picked up by all other branches, so it ensures that even new
# branches and tags don't have to download a complete copy of TeX Live.
#
# Since GitHub keeps unused caches for one week, we need to run at least once a week
# to ensure that the cache always stays around. To avoid timing issues and issues
# when an update fails for some reason, we run twice per week.

name: Keep TeX Live cache up-to-date
on:
schedule:
# Run every tuesday and saturday at 02:48. The time has been chosen at random.
- cron: '48 2 * * 2,6'

jobs:
cache:
runs-on: ubuntu-20.04
name: Update TeX Live
steps:
# GitHub Actions don't regenerate the test if the key doesn't change, so
# we integrate a random UUID into the key to keep them different.
# DO NOT CHANGE THIS
- name: Generate unique ID
id: get-id
run: |
echo -n ::set-output name=id::
cat /proc/sys/kernel/random/uuid
# Actually load the cache. Since we never reuse the key, we need restore-keys
# to indicate the prefix of our caches. This loads the newest cache with this
# prefix in the key.
#
# If we want to force regeneration of the cache, increase the number after
# *both* instances of "texlive-v" and synchronize the other workflow files.
- name: Load cache
uses: actions/cache@v2
with:
path: ~/texlive
key: texlive-v0-${{ steps.get-id.outputs.id }}
restore-keys: texlive-v0-
- name: Install TeX Live
uses: zauguin/install-texlive@v1
with:
# List the required TeX Live packages in a separate file to allow reuse in
# different workflows.
package_file: .github/tl_packages
@@ -0,0 +1,122 @@
name: Create release

# We create releases for all new tags
on:
push:
tags:
- "*"

jobs:
# The l3build job contains the actual work. This is mostly the same as in main.yaml
# and should stay synchronized. Sadly it doesn't seem possible to reuse the instructions at the moment.
release:
runs-on: ubuntu-20.04
name: Build release
environment: Release
steps:
# Boilerplate
- name: Checkout repository
uses: actions/checkout@v2
# GitHub Actions don't regenerate the test if the key doesn't change, so
# we integrate a random UUID into the key to keep them different.
# DO NOT CHANGE THIS
- name: Generate unique ID
id: get-id
run: |
echo -n ::set-output name=id::
cat /proc/sys/kernel/random/uuid
# Actually load the cache. Since we never reuse the key, we need restore-keys
# to indicate the prefix of our caches. This loads the newest cache with this
# prefix in the key.
#
# If we want to force regeneration of the cache, increase the number after
# *both* instances of "texlive-v"
- name: Load cache
uses: actions/cache@v2
with:
path: ~/texlive
key: texlive-v0-${{ steps.get-id.outputs.id }}
restore-keys: texlive-v0-
# We need Ghostscript for dvips and XeTeX tests.
- run: sudo apt-get update && sudo apt-get install ghostscript
- name: Install TeX Live
uses: zauguin/install-texlive@v1
with:
# List the required TeX Live packages in a separate file to allow reuse in
# different workflows.
package_file: .github/tl_packages
- name: Run l3build
run: l3build ctan -q -H --show-log-on-error
- name: Archive failed test output
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: testfiles
path: build/test*/*.diff
# Decide how long to keep the test output artifact:
retention-days: 3
# Now create the release (this only runs if the previous steps were successful)
- name: Create GitHub release
uses: ncipollo/release-action@880be3d0a71bc0fa98db60201d2cbdc27324f547
id: release
with:
artifacts: "*.zip"
token: ${{ secrets.GITHUB_TOKEN }}
# Determine the name of the tag we are working on. Sadly GH Actions only provides
# github.ref which has the name prefixed with github.ref and no way to remove a prefix
# in normal expressions, so we need an action for that.
- name: Get name
uses: frabert/replace-string-action@9b62dfe3ae936b1cc380f2421c8ac9e63a4a3e85
id: name
if: ${{ always() }}
with:
pattern: "^refs/(?:heads|tags)/"
string: ${{ github.ref }}
replace-with: ""
# While the normal notification job only informs about failed runs, we additionally want to notify about successful releases.
- name: Send mail
# The explicit commit hash ensures that this can't be used by dawidd6 as a
# backdoor to execute arbitrary code during our runs.
uses: dawidd6/action-send-mail@ceb614a2c5737d913f2d2729e2bcc70ad933382b
with:
# Currently using my (Marcel's) mail server for sending mails.
server_address: typesetting.eu
server_port: 587
# These values can be changed in the repository settings.
username: ${{secrets.MAIL_USERNAME}}
password: ${{secrets.MAIL_PASSWORD}}
# If we want to send notifications to additional addresses, at them here as
# a comma separated list.
to: latex3-commits@tug.org
# The name is arbitrary, but if you want to change the address you need to
# coordinate it with the administrator of the mail server to allow the account
# to send from the mail address.
from: LaTeX CI <github@latex-project.org>
# Determine the subject and body of the mail.
subject: "Version ${{steps.name.outputs.replaced}} of ${{github.repository}} has been released"
body: |
The release ${{steps.name.outputs.replaced}} has been created for ${{github.repository}}.
More information can be found at
${{steps.release.outputs.html_url}}
- name: Send failure notification
uses: dawidd6/action-send-mail@ceb614a2c5737d913f2d2729e2bcc70ad933382b
if: ${{ failure() }}
with:
server_address: typesetting.eu
server_port: 587
username: ${{secrets.MAIL_USERNAME}}
password: ${{secrets.MAIL_PASSWORD}}
to: latex3-commits@tug.org
from: LaTeX CI <github@latex-project.org>
priority: high
# Determine the subject and body of the mail.
subject: "Test failure while trying to build release ${{steps.name.outputs.replaced}} in ${{github.repository}}"
body: |
Test failure for ${{github.repository}}
-------------------------------------------------------------
On tag: ${{steps.name.outputs.replaced}} (${{github.sha}})
Initiated by: ${{github.actor}}
Commit URL: https://github.com/${{github.repository}}/commit/${{github.sha}}
More information: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
@@ -0,0 +1,134 @@
name: Automated testing

# Currently we run in two situations:
on:
# Whenever someone pushes to a branch in our repo
push:
branches:
- "*"
# Whenever a pull request is opened, reopened or gets new commits.
pull_request:
# This implies that for every push to a local branch in our repo for which a
# pull request is open this runs twice. But it's important to ensure that pull
# requests get tested even if their branch comes from a fork.

jobs:
# The l3build job contains the actual work. We misuse the matrix mechanism to
# create three jobs which only differ in minimal elements.
# For tags we do not run this since we run the release job instead.
l3build:
runs-on: ubuntu-20.04
strategy:
matrix:
# include indicates that we want to set explicitly these combinations
# and don't want full matrix testing.
# "name" is just to make the output more readable.
# "l3build_cmd" is the actual command to run
# "artifact_name" is which artifact might get generated by this step.
# IMPORTANT: artifact_name == "Documentation" is used as a trigger to
# generate the artifact from PDF files and not the build directory and
# to generate the artifact when the run is successful, not when it fails.
include:
- name: "Test suite"
l3build_cmd: l3build check -q -H --show-log-on-error
artifact_name: testfiles
- name: "Documentation"
l3build_cmd: l3build doc -q -H
artifact_name: Documentation
name: ${{ matrix.name }}
steps:
# Boilerplate
- name: Checkout repository
uses: actions/checkout@v2
# GitHub Actions don't regenerate the test if the key doesn't change, so
# we integrate a random UUID into the key to keep them different.
# DO NOT CHANGE THIS
- name: Generate unique ID
id: get-id
run: |
echo -n ::set-output name=id::
cat /proc/sys/kernel/random/uuid
# Actually load the cache. Since we never reuse the key, we need restore-keys
# to indicate the prefix of our caches. This loads the newest cache with this
# prefix in the key.
#
# If we want to force regeneration of the cache, increase the number after
# *both* instances of "texlive-v"
- name: Load cache
uses: actions/cache@v2
with:
path: ~/texlive
key: texlive-v0-${{ steps.get-id.outputs.id }}
restore-keys: texlive-v0-
# We need Ghostscript for dvips and XeTeX tests.
- run: sudo apt-get update && sudo apt-get install ghostscript
- name: Install TeX Live
uses: zauguin/install-texlive@v1
with:
# List the required TeX Live packages in a separate file to allow reuse in
# different workflows.
package_file: .github/tl_packages
- name: Run l3build
run: ${{ matrix.l3build_cmd }}
# Now we create the artifacts: There are two cases where this happens.
# 1. If we failed running tests
- name: Archive failed test output
if: ${{ matrix.artifact_name != 'Documentation' && failure() }}
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.artifact_name }}
path: build/test*/*.diff
# Decide how long to keep the test output artifact:
retention-days: 3
# 2. If we succeed building documentation
- name: Archive documentation
if: ${{ matrix.artifact_name == 'Documentation' && success() }}
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.artifact_name }}
path: "**/*.pdf"
# Decide how long to keep the test output artifact:
retention-days: 21
# GitHub automatically informs the initiator of any action about the result, but
# we additionally want to keep the latex-commits mailing list informed about
# test failures.
notifiy:
name: Send notifications
runs-on: ubuntu-20.04
# Run after the `l3build` job in order to be able to react to it's output.
needs: l3build
# Only run if the tests failed, we don't want to get notifications for every run.
# We don't want information for pull requests since for pull requests from local
# branches we already send notifications when the branch test fails and pull requests
# from forks can't access the username and password secrets required to send mails.
if: ${{ failure() && github.event_name != 'pull_request' }}
steps:
- name: Send mail
# The explicit commit hash ensures that this can't be used by dawidd6 as a
# backdoor to execute arbitrary code during our runs.
uses: dawidd6/action-send-mail@ceb614a2c5737d913f2d2729e2bcc70ad933382b
with:
# Currently using my (Marcel's) mail server for sending mails.
server_address: typesetting.eu
server_port: 587
# These values can be changed in the repository settings.
username: ${{secrets.MAIL_USERNAME}}
password: ${{secrets.MAIL_PASSWORD}}
# If we want to send notifications to additional addresses, at them here as
# a comma separated list.
to: latex3-commits@tug.org
# The name is arbitrary, but if you want to change the address you need to
# coordinate it with the administrator of the mail server to allow the account
# to send from the mail address.
from: LaTeX CI <github@latex-project.org>
priority: high
# Determine the subject and body of the mail.
subject: "Test failed: ${{github.repository}} (${{github.ref}})"
body: |
Test failure for ${{github.repository}}
-------------------------------------------------------------
On branch: ${{github.ref}} (${{github.sha}})
Initiated by: ${{github.actor}}
Commit URL: https://github.com/${{github.repository}}/commit/${{github.sha}}
More information: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
@@ -20,3 +20,5 @@ build/*
*.log
*.out
*.toc

.DS_Store

Showing you all comments on commits in this comparison.

@stone-zeng

This comment has been minimized.

Copy link
Contributor

@stone-zeng stone-zeng commented on 59c12b9 May 11, 2021

It should be `\group_align_safe_begin:`

@Skillmon

This comment has been minimized.

Copy link
Contributor

@Skillmon Skillmon commented on 5e25dd9 May 12, 2021

I'm not sure how often the \if_meaning:w \scan_stop: test is true here, but it might be worth it to place the ; after the \fi: and have one \exp_after:wN less with:

\if_meaning:w \scan_stop: #1
  \exp_after:wN \use_ii:nnn
\fi:
\use_ii:nn
  ;
  { <stuff> }

same goes for the code of \@@_escape_x:N a few lines below.

@blefloch

This comment has been minimized.

Copy link
Member Author

@blefloch blefloch commented on 5e25dd9 May 12, 2021

\scan_stop: only occurs there if the end of the regex is reached when scanning for \x.. so it is a pretty rare case.

@blefloch

This comment has been minimized.

Copy link
Member Author

@blefloch blefloch commented on 59c12b9 May 13, 2021

Thank you @stone-zeng

@FrankMittelbach

This comment has been minimized.

Copy link
Member

@FrankMittelbach FrankMittelbach commented on 9a18a99 May 18, 2021

I think this is missing some documentation on how to redirect

@FrankMittelbach

This comment has been minimized.

Copy link
Member

@FrankMittelbach FrankMittelbach commented on beada4e May 19, 2021

looks good I think, but in the documentation I would be a little more verbose because people new to it might think that info does more than note (which is not the way it is for historical reasons).

So perhaps

  • info for information messages going to the long only and
  • note for information messages going to both the terminal and the log

or something like that

@dbitouze

This comment has been minimized.

Copy link
Contributor

@dbitouze dbitouze commented on beada4e May 26, 2021

\msg_note isn't documented in l3msg.dtx released on 2021-05-25.

@FrankMittelbach

This comment has been minimized.

Copy link
Member

@FrankMittelbach FrankMittelbach commented on beada4e May 28, 2021

@dbitouze it is now it seems