Skip to content
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

macOS: Some environment variables are not working for alternatives #66

Closed
bartoszkosiorek opened this issue Jun 12, 2020 · 33 comments
Closed
Assignees

Comments

@bartoszkosiorek
Copy link

bartoszkosiorek commented Jun 12, 2020

Due to System Integrity Protection (SIP) on macOS systems, the binaries from the /bin (eg. /bin/bash) are not allowed to handle this environment variables. More information: https://support.apple.com/en-us/HT204899

Example of SIP:

  • Create ./test.sh file
#!/bin/bash
echo $DYLD_LIBRARY_PATH
  • Run with command: DYLD_LIBRARY_PATH=/lalala ./test.sh

Result:

  • Nothing is printed:
    $ DYLD_LIBRARY_PATH=/lalala ./test.sh

The current generated alternative script files on macOS from the pkg_alternatives package are having as interpreter /bin/bash, eg. pip3:

$ head /usr/local/pkg/bin/pip3
#!/bin/bash
#
# $NetBSD: wrapper.sh,v 1.2 2012/06/13 15:35:32 jperkin Exp $
#
# pkg_alternatives - Generic wrappers for programs with similar interfaces
# Copyright (c) 2005 Julio M. Merino Vidal <jmmv@NetBSD.org>
...

This is a bit problematic in case of macOS as due to SIP protection for example declared environment variable like DYLD_LIBRARY_PATH is rejected.

This will lead eventually to problems for trying to do things like DYLD_LIBRARY_PATH=/path_with_dylibs /usr/local/pkg//bin/ctest which is pretty common.

@jperkin
Copy link
Collaborator

jperkin commented Jun 12, 2020

I think I've seen this worked around by using a shell from pkgsrc, we may want to investigate going back to bootstrapping our own and using it for everything.

@bartoszkosiorek
Copy link
Author

For my own project I would like to change the default shebang for wrappers.
It seems that it could be modified in:
https://github.com/NetBSD/pkgsrc/blob/trunk/pkgtools/pkg_alternatives/files/wrapper.sh#L1

Do you know by which option the __SH__ or @SH@ could be set?

@bsiegert
Copy link
Contributor

bsiegert commented Jun 12, 2020 via email

@jperkin
Copy link
Collaborator

jperkin commented Jun 12, 2020

Simplest way is:

$ cd pkgsrc/pkgtools/pkg_alternatives
$ bmake TOOLS_PLATFORM.sh=/opt/pkg/bin/bash install

or whatever shell you want to use outside of /bin.

@bartoszkosiorek
Copy link
Author

@jperkin I have found also WRAPPER_SH variable in settings:
https://github.com/NetBSD/pkgsrc/blob/pkgsrc-2019Q1/mk/wrapper/wrapper-defs.mk#L41

@jperkin
Copy link
Collaborator

jperkin commented Jun 12, 2020

No, that's something completely different (and something you're unlikely to be using).

@bartoszkosiorek
Copy link
Author

What do you think about idea, of use bash from pkgsrc/shells/bash package by pkg_alternatives for wrappers?

It will resolve such kind of issues, but it will be additional dependency to shells/bash.

@jperkin
Copy link
Collaborator

jperkin commented Jun 12, 2020

As a local change it would be fine, nothing depends on pkg_alternatives so you aren't running any risks during upgrades etc.

For a wider pkgsrc fix we'll need to look into what the current status of shells/pdksh is on Darwin by running some bulk builds, and then if it looks ok consider switching bootstrap over to using it by default.

@bartoszkosiorek
Copy link
Author

bartoszkosiorek commented Jun 12, 2020

After set TOOLS_PLATFORM.sh=/usr/local/pkg/bin/bash, the wrappers have changed shebang correctly.

I will try to overwrite TOOLS_PLATFORM.sh variable in pkg_alternatives/Makefile and add dependency, to use the default shells/bash shell.

I have build the shells/pdksh without problems.

Logs from shells/pdksh build on macOS Catalina 10.15.5

Click to expand!

pdksh build logs

$ sudo /usr/local/pkg/bin/bmake deinstall
===> Deinstalling for pdksh-5.2.14nb7
Running /usr/local/pkg/sbin/pkg_delete -K /usr/local/pkg/pkgdb  pdksh-5.2.14nb7
$ sudo /usr/local/pkg/bin/bmake clean
===> Cleaning for pdksh-5.2.14nb7
$ sudo /usr/local/pkg/bin/bmake install
===> Installing dependencies for pdksh-5.2.14nb7
=> Build dependency cwrappers>=20150314: found cwrappers-20180325
===> Overriding tools for pdksh-5.2.14nb7
===> Extracting for pdksh-5.2.14nb7
/bin/cp -R /Users/NavKit/dev/pkgsrc/shells/pdksh/files /private/var/tmp/pkgsrc-obj/shells/pdksh/work/pdksh-5.2.14
===> Patching for pdksh-5.2.14nb7
===> Creating toolchain wrappers for pdksh-5.2.14nb7
===> Configuring for pdksh-5.2.14nb7
=> Modifying GNU configure scripts to avoid --recheck
=> Replacing config-guess with pkgsrc versions
=> Replacing config-sub with pkgsrc versions
=> Replacing install-sh with pkgsrc version
creating cache ./config.cache
checking for gcc... clang
checking whether we are using GNU C... yes
checking how to run the C preprocessor... clang -E
checking whether clang needs -traditional... no
checking if this is a problematic os... checking for minix/config.h... no
no
checking for dirent.h that defines DIR... yes
checking for opendir in -ldir... no
checking for opendir in -lndir... no
checking for sane unistd.h... yes
checking terminal interface... termios
checking for stddef.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for fcntl.h... yes
checking for limits.h... yes
checking for paths.h... yes
checking for sys/param.h... yes
checking for sys/resource.h... yes
checking for values.h... no
checking for ulimit.h... yes
checking for sys/time.h... yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for off_t in sys/types.h... yes
checking for mode_t in sys/types.h... yes
checking for pid_t in sys/types.h... yes
checking for uid_t in sys/types.h... yes
checking return type of signal handlers... void
checking size of int... 4
checking size of long... 8
checking for clock_t in any of <sys/types.h>, <sys/times.h> and <sys/time.h>... yes
checking for sigset_t in <sys/types.h> and <signal.h>... yes
checking for rlim_t in <sys/types.h> and <sys/resource.h>... yes
checking for working memmove... yes
checking for memset... yes
checking for confstr... yes
checking for dup2... yes
checking for flock... yes
checking for getcwd... yes
checking for getwd... yes
checking for killpg... yes
checking for nice... yes
checking for setrlimit... yes
checking for strerror... yes
checking for strcasecmp... yes
checking for strstr... yes
checking for sysconf... yes
checking for tcsetpgrp... yes
checking for ulimit... yes
checking for waitpid... yes
checking for wait3... yes
checking for strlcpy... yes
checking for strlcat... yes
checking for sigsetjmp... yes
checking for valloc... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for lstat... yes
checking for sys_errlist declaration in errno.h... no
checking for sys_errlist in library... yes
checking for sys_siglist declaration in signal.h or unistd.h... yes
checking for sys_siglist in library... yes
checking time() declaration in time.h... yes
checking if times() is present/working... yes
checking whether stat file-mode macros are broken... no
checking for st_rdev in struct stat... yes
checking for working const... yes
checking if compiler understands void... yes
checking if compiler understands volatile... yes
checking if compiler understands prototypes... yes
checking if C compiler groks __attribute__(( .. ))... yes
checking whether #! works in shell scripts... yes
checking for a BSD compatible install... /usr/bin/install -c -o root -g wheel
checking if dup2() works (ie, resets the close-on-exec flag)... yes
checking flavour of signal routines... posix
checking flavour of pgrp routines... posix
checking if process group synchronization is required... no
checking if opendir() fails to open non-directories... yes
checking if you have /dev/fd/n... yes
updating cache ./config.cache
creating ./config.status
creating Makefile
creating config.h
===> Building for pdksh-5.2.14nb7
--- emacs.out ---
--- ksh.1 ---
--- stamp-h ---
--- emacs.out ---
./emacs-gen.sh ./emacs.c > tmpemacs.out
--- ksh.1 ---
./mkman ksh ./ksh.Man > tmpksh.1
--- stamp-h ---
CONFIG_FILES="" CONFIG_HEADERS=config.h ./config.status
--- emacs.out ---
mv tmpemacs.out emacs.out
--- ksh.1 ---
mv tmpksh.1 ksh.1
--- stamp-h ---
creating config.h
config.h is unchanged
date > stamp-h
--- siglist.out ---
--- alloc.o ---
--- c_ksh.o ---
--- c_sh.o ---
--- c_test.o ---
--- c_ulimit.o ---
--- edit.o ---
--- emacs.o ---
--- siglist.out ---
./siglist.sh "clang -E -P  -DHAVE_CONFIG_H -I. -I." < ./siglist.in > tmpsiglist.out
--- alloc.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 alloc.c
--- c_ksh.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 c_ksh.c
--- c_sh.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 c_sh.c
--- c_test.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 c_test.c
--- c_ulimit.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 c_ulimit.c
--- edit.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 edit.c
--- emacs.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 emacs.c
--- c_ksh.o ---
c_ksh.c:571:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                        shprintf(newline);
                                 ^~~~~~~
c_ksh.c:571:13: note: treat the string as an argument to avoid this
                        shprintf(newline);
                                 ^
                                 "%s", 
c_ksh.c:871:17: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                            shprintf(newline);
                                     ^~~~~~~
c_ksh.c:871:17: note: treat the string as an argument to avoid this
                            shprintf(newline);
                                     ^
                                     "%s", 
c_ksh.c:962:14: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                shprintf(newline);
                                         ^~~~~~~
c_ksh.c:962:14: note: treat the string as an argument to avoid this
                                shprintf(newline);
                                         ^
                                         "%s", 
c_ksh.c:986:14: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                shprintf(newline);
                                         ^~~~~~~
c_ksh.c:986:14: note: treat the string as an argument to avoid this
                                shprintf(newline);
                                         ^
                                         "%s", 
c_ksh.c:1234:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                bi_errorf(null);
                          ^~~~
c_ksh.c:1234:13: note: treat the string as an argument to avoid this
                bi_errorf(null);
                          ^
                          "%s", 
c_ksh.c:1255:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                        shprintf(newline);
                                 ^~~~~~~
c_ksh.c:1255:13: note: treat the string as an argument to avoid this
                        shprintf(newline);
                                 ^
                                 "%s", 
--- eval.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 eval.c
--- exec.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 exec.c
--- siglist.out ---
mv tmpsiglist.out siglist.out
--- expr.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 expr.c
--- eval.o ---
eval.c:340:19: warning: implicit conversion from 'int' to 'char' changes value from 192 to -64 [-Wconstant-conversion]
                                                *dp++ = '@' + 0x80;
                                                      ~ ~~~~^~~~~~
--- history.o ---
--- exec.o ---
exec.c:148:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                        errorf(null);
                                               ^~~~
exec.c:148:13: note: treat the string as an argument to avoid this
                                        errorf(null);
                                               ^
                                               "%s", 
--- history.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 history.c
--- expr.o ---
expr.c:190:11: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                        errorf(null);
                               ^~~~
expr.c:190:11: note: treat the string as an argument to avoid this
                        errorf(null);
                               ^
                               "%s", 
--- io.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 io.c
--- expr.o ---
1 warning generated.
--- jobs.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 jobs.c
--- lex.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 lex.c
--- c_ksh.o ---
6 warnings generated.
--- mail.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 mail.c
--- jobs.o ---
jobs.c:897:11: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
        shprintf(newline);
                 ^~~~~~~
jobs.c:897:11: note: treat the string as an argument to avoid this
        shprintf(newline);
                 ^
                 "%s", 
--- main.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 main.c
--- misc.o ---
--- lex.o ---
lex.c:858:9: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
        errorf(null);
               ^~~~
lex.c:858:9: note: treat the string as an argument to avoid this
        errorf(null);
               ^
               "%s", 
--- misc.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 misc.c
--- main.o ---
main.c:562:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                        shellf(newline);
                                               ^~~~~~~
main.c:562:13: note: treat the string as an argument to avoid this
                                        shellf(newline);
                                               ^
                                               "%s", 
main.c:861:9: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
        errorf(null); /* this is never executed - keeps gcc quiet */
               ^~~~
main.c:861:9: note: treat the string as an argument to avoid this
        errorf(null); /* this is never executed - keeps gcc quiet */
               ^
               "%s", 
--- exec.o ---
1 warning generated.
--- missing.o ---
--- path.o ---
--- missing.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 missing.c
--- path.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 path.c
--- misc.o ---
misc.c:262:12: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                shprintf(newline);
                         ^~~~~~~
misc.c:262:12: note: treat the string as an argument to avoid this
                shprintf(newline);
                         ^
                         "%s", 
--- eval.o ---
1 warning generated.
--- misc.o ---
misc.c:1014:15: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                bi_errorf(null);
                                          ^~~~
misc.c:1014:15: note: treat the string as an argument to avoid this
                                bi_errorf(null);
                                          ^
                                          "%s", 
misc.c:1040:15: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                                bi_errorf(null);
                                          ^~~~
misc.c:1040:15: note: treat the string as an argument to avoid this
                                bi_errorf(null);
                                          ^
                                          "%s", 
misc.c:1091:20: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
                        shprintf("'\\'" + 1 - inquote);
                                 ~~~~~~~^~~
misc.c:1091:20: note: use array indexing to silence this warning
                        shprintf("'\\'" + 1 - inquote);
                                        ^
                                 &      [  ]
misc.c:1091:13: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                        shprintf("'\\'" + 1 - inquote);
                                 ^~~~~~~~~~~~~~~~~~~~
misc.c:1091:13: note: treat the string as an argument to avoid this
                        shprintf("'\\'" + 1 - inquote);
                                 ^
                                 "%s", 
--- shf.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 shf.c
--- sigact.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 sigact.c
--- main.o ---
2 warnings generated.
--- syn.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 syn.c
--- table.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 table.c
--- tree.o ---
--- jobs.o ---
1 warning generated.
--- tree.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 tree.c
--- tty.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 tty.c
--- var.o ---
--- version.o ---
--- var.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 var.c
--- version.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 version.c
--- vi.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 vi.c
--- misc.o ---
5 warnings generated.
--- trap.o ---
clang -c  -DHAVE_CONFIG_H -I. -I. -O2 trap.c
--- var.o ---
var.c:373:11: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                        errorf(null);
                               ^~~~
var.c:373:11: note: treat the string as an argument to avoid this
                        errorf(null);
                               ^
                               "%s", 
var.c:727:14: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
                    errorf(null);
                           ^~~~
var.c:727:14: note: treat the string as an argument to avoid this
                    errorf(null);
                           ^
                           "%s", 
--- vi.o ---
vi.c:1761:6: warning: address of array 'newline' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (newline) {
        ~~  ^~~~~~~
--- lex.o ---
1 warning generated.
--- var.o ---
2 warnings generated.
--- vi.o ---
1 warning generated.
--- ksh ---
clang -L/usr/local/pkg/lib -o ksh alloc.o c_ksh.o c_sh.o c_test.o c_ulimit.o edit.o emacs.o  eval.o exec.o expr.o history.o io.o jobs.o lex.o mail.o  main.o misc.o missing.o path.o shf.o sigact.o syn.o table.o trap.o  tree.o tty.o var.o version.o vi.o 
===> Installing for pdksh-5.2.14nb7
=> Generating pre-install file lists
=> Creating installation directories
/usr/bin/install -c  -o root -g wheel -m 755 /private/var/tmp/pkgsrc-obj/shells/pdksh/work/pdksh-5.2.14/ksh /private/var/tmp/pkgsrc-obj/shells/pdksh/work/.destdir/usr/local/pkg/bin/pdksh
/usr/bin/install -c -o root -g wheel -m 644 /private/var/tmp/pkgsrc-obj/shells/pdksh/work/pdksh-5.2.14/ksh.1 /private/var/tmp/pkgsrc-obj/shells/pdksh/work/.destdir/usr/local/pkg/man/man1/pdksh.1
=> Automatic stripping binaries
=> Automatic manual page handling
=> Generating post-install file lists
=> Checking file-check results for pdksh-5.2.14nb7
=> Creating binary package /private/var/tmp/pkgsrc-obj/shells/pdksh/work/.packages/pdksh-5.2.14nb7.tgz
===> Building binary package for pdksh-5.2.14nb7
=> Creating binary package /Users/NavKit/dev/pkgsrc/packages/All/pdksh-5.2.14nb7.tgz
===> Installing binary package of pdksh-5.2.14nb7
===========================================================================
The following lines can be added to /etc/shells:

	/usr/local/pkg/bin/pdksh

===========================================================================
$  /usr/local/pkg/bin/pdksh
$ exit
$ uname -a
Darwin pl1mcl-5287921 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64

@bartoszkosiorek
Copy link
Author

@jperkin Do you know how to setup shell from pkgsrc globally in bootstrap?
The bootstrap tools are defined here:
https://github.com/NetBSD/pkgsrc/blob/trunk/mk/tools/tools.Darwin.mk#L100

How these paths needs to be set properly to use pkgsrc shell and how add dependency to boostrap?

@jperkin
Copy link
Collaborator

jperkin commented Jun 12, 2020

Yes, I'm currently testing this in a bulk build.

@bartoszkosiorek
Copy link
Author

Could you please share the code with updated bootstrap?
I would like to start my own testing.

@jperkin
Copy link
Collaborator

jperkin commented Jun 13, 2020

For testing I'm just using bootstrap with the --full argument, this ensures that pdksh is bootstrapped and set as the default shell. If it looks ok then the permanent fix would be adding need_ksh=true to the Darwin setup section, probably being limited to OS releases that ship with SIP.

@bartoszkosiorek
Copy link
Author

@jperkin Do you know if the zsh could be used by default for macOS/Darwin, as it is default shell:
https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features
?

@jperkin
Copy link
Collaborator

jperkin commented Jun 15, 2020

One of the build hosts crashed over the weekend (Catalina is highly unreliable), I'll need to restart it.

As for zsh, I wouldn't recommend it, it's not designed to be a fast POSIX-only shell, but more as a feature-full interactive shell.

@bartoszkosiorek
Copy link
Author

bartoszkosiorek commented Jun 16, 2020

I think I found the root cause of my problems:
During run bootstrap, I was using SH=/bin/bash environment variable:
SH=/bin/bash ./bootstrap --prefix "$PKGSRC_PREFIX" --prefer-pkgsrc yes --workdir "$WORK_DIR" $__UNPRIVILEGED

After removing SH=/bin/bash, and use default shell, most/all of alternatives are using #!/usr/local/pkg/bin/bash shebang (/usr/local/pkg/ is a directory where pkgsrc is installed).

Do you know why it choose the bash instead of sh, as defined here?
https://github.com/NetBSD/pkgsrc/blob/trunk/mk/tools/tools.Darwin.mk#L100

The /usr/local/pkg/etc/mk.conf content:

# Example /usr/local/pkg/etc/mk.conf file produced by bootstrap-pkgsrc
# Tue Jun 16 11:12:26 CEST 2020
.ifdef BSD_PKG_MK       # begin pkgsrc settings
ABI=                    64
PKGSRC_COMPILER=        clang
CC=                     clang
CXX=                    clang++
CPP=                    ${CC} -E
CLANGBASE=              /usr
UNPRIVILEGED=           yes
PKG_DBDIR=              /usr/local/pkg/pkgdb
LOCALBASE=              /usr/local/pkg
VARBASE=                /usr/local/pkg/var
PKG_TOOLS_BIN=          /usr/local/pkg/sbin
PKGINFODIR=             info
PKGMANDIR=              man
PREFER_PKGSRC=          yes
MAKE_JOBS=8
SKIP_LICENSE_CHECK=yes
WRKOBJDIR=/private/var/tmp/pkgsrc-obj
X11_TYPE=modular
RUBY_VERSION_DEFAULT=25
ALLOW_VULNERABLE_PACKAGES=yes
PREFER_PKGSRC=  yes
PKG_OPTIONS.libfetch+= openssl
INSTALL_UNSTRIPPED=no
STRIP_BINARIES=yes
PKGSRC_USE_RELRO=full
BUILDLINK_USE_HARDLINKS=no
.endif                  # end pkgsrc settings

@bartoszkosiorek
Copy link
Author

@jperkin Do you find any issue with building ksh by default in bootstrap?

@jperkin
Copy link
Collaborator

jperkin commented Jun 17, 2020

Bootstrap will default to /bin/sh (i.e. bash) unless you override SH in the bootstrap environment. If it's using /usr/local/pkg/bin/bash then that will be from a setting you have somewhere (you mentioned earlier about patching things so it's probably from that).

The bulk build isn't finished yet, they usually take around 3 days to complete on macOS from scratch.

@jperkin
Copy link
Collaborator

jperkin commented Jun 17, 2020

FWIW it's currently at 17380/22794, producing 13451 packages, so looks reasonable so far.

@bartoszkosiorek
Copy link
Author

bartoszkosiorek commented Jun 17, 2020

Thanks. I found an issue in my internal scripts.

After enabling need_ksh on Darwin, the shell used by pkgsrc (pdksh) will be completely independent from what is installed on system (etc. /bin/bash or /bin/zsh).

So it will resolve issue with:
https://support.apple.com/en-us/HT208050

Apple could remove /bin/bash and /bin/zsh and the pkgsrc will be still working with shells/pdksh.

Am I right?

@bartoszkosiorek bartoszkosiorek changed the title macOS: Environment variables are not working for alternatives macOS: Some environment variables are not working for alternatives Jun 17, 2020
@jperkin
Copy link
Collaborator

jperkin commented Jun 18, 2020

I've posted the results of the bulk build along with a patch for bootstrap here for review: http://mail-index.netbsd.org/tech-pkg/2020/06/18/msg023387.html

@bartoszkosiorek
Copy link
Author

@jperkin Thanks for your patch!

Could you please enable need_ksh=yes as default, and disable it only on old systems?
Otherwise the versions needs to be updated once the new macOS version will be released.

Something similar to:
https://github.com/NetBSD/pkgsrc/pull/67/files

@bartoszkosiorek
Copy link
Author

@jperkin I think every package, which use pkg_alternatives, should have running dependency on shells/pdksh shell. Otherwise, it could happen that the application wrapper couldn't be run due to missing pdksh.

@jperkin
Copy link
Collaborator

jperkin commented Jun 22, 2020

That would already be handled on account of it being a BOOTSTRAP_PKG.

@bartoszkosiorek
Copy link
Author

After setting need_ksh, almost all +INSTALL scripts are using default shell (for macOS it will be pdksh).
For example pkg_alternatives:
https://github.com/NetBSD/pkgsrc/blob/trunk/pkgtools/pkg_alternatives/INSTALL

But for some packages, the shell is hardcoded. For example for pkg_install:
https://github.com/NetBSD/pkgsrc/blob/trunk/pkgtools/pkg_install/INSTALL#L1

Do you know the reason for that? Why the default shell is not used for pkg_install?

@jperkin
Copy link
Collaborator

jperkin commented Jun 23, 2020

I think just an oversight, though it's probably a good idea to be as safe as possible for critical packages and there's nothing in the pkg_install INSTALL script that would cause problems for any Bourne shell.

@bartoszkosiorek
Copy link
Author

What else needs to be done to enable ksh by default for macOS bootstrap?

@jperkin
Copy link
Collaborator

jperkin commented Jul 1, 2020

After running into a separate issue in pdksh I went an alternative route and implemented mksh as a bootstrap shell. I'm just waiting on review of http://mail-index.netbsd.org/tech-pkg/2020/06/29/msg023478.html and will, once that's imported, switch macOS over to it.

netbsd-srcmastr pushed a commit that referenced this issue Feb 19, 2023
# CHANGES IN xfun VERSION 0.37

- Added a function `is_arm64()` to test the CPU type (thanks, @AlbanSagouis, #72).

- Started deprecating `xfun::isFALSE()` in favor of `base::isFALSE()`
  for R >= 3.5.0 (thanks, @mmaechler, #66); `isFALSE()` will
  eventually be removed from **xfun** when we do not need to support R
  < 3.5.0.
netbsd-srcmastr pushed a commit that referenced this issue Mar 15, 2023
1.21.0 (2023-02-13)

* Support for Ruby 3.0.0, 3.1.0, 3.2.0. (Drop support for Ruby 2.2 and
  earlier.) #66

* Support Rails 6 and Rails 7. (Drop support for Rails 3.x, 4.x) #66, #72

* Fix RMagick 5.0 compatible. #66

* Infinite loop has been resolved. #68, #74

* Fixed a bug that caused the x position to shift when an <img> tag was
  behind a <li> tag in HTML. #74

* fix: Incorrect characters when copying out of a generated PDF with Unicode
  fonts. #71

* Suppresses output for Circle(), Ellipse(), PieSector(), and PieSectorXY()
  when the radius is 0. #67

* Don't change an object while iterating over it #59 (by thegcat)

* fix : bidi bug #56 (by ahorek)

* Avoid rdoc stack level too deep (SystemStackError) in gem install. #76

* PDF example output option OUTPUT=true added #70

* Make the image file path acquisition process extensible #58 (by yui-har)
netbsd-srcmastr pushed a commit that referenced this issue Mar 23, 2023
This release will include the following changes:

 - Fetch scrollback history independently of main loop #39
 - Add NetBSD install instructions #51
 - Create release profile with LTO #52
 - Support configuring client request timeout #54
 - Link to iamb space in README #55
 - Fix empty message check when sending #56
 - Show events that couldn't be decrypted #57
 - Allow log level to be configured #58
 - Indicate when an encrypted room event has been redacted #59
 - Lazy load room state events on initial sync #62
 - HTML self-closing tags are getting parsed incorrectly #63
 - Emote messages should always show sender #65
 - Update README.md to include Arch Linux package #66
 - Redacted messages need to have their HTML removed #67

I'm also going to update to modalkit@0.0.14 to pull in two useful bug fixes:
 - List widget should only use focus for rendering item modalkit#102
 - Vim keybinding D has wrong Count modalkit#103
netbsd-srcmastr pushed a commit that referenced this issue Apr 4, 2023
pkgsrc changes:
* make mlconfig.po installed properly (#66)
* remove local patches integrated into upstream

Upstream changes (noted in doc/en/ReleaseNote):

ver 3.9.3
* mlterm-wl supports xdg-decoration.
* Add --disable-compact-truecolor option to ./configure script.
* Add vte 0.68 API symbols to libvte compatible library.
* Add libvterm 0.2 API symbols to libvterm compatible library.
* Add --sdpr / simple_scrollbar_dpr option.
  (arakiken/mlterm#64)
* Set "COLORTERM=truecolor" environmental variable.
  (arakiken/mlterm#36)
* Update unicode property table (generated from UnicodeData.txt and
  EastAsianWidth.txt) to version 15.0.0.
* Support mosh-1.4.0.
* Merge patches:
  arakiken/mlterm#45.
  arakiken/mlterm#46.
  arakiken/mlterm#48.
  arakiken/mlterm#49.
  arakiken/mlterm#55. (Add --role / wm_role option)
  arakiken/mlterm#57.
  arakiken/mlterm#61.
  arakiken/mlterm#62.
  arakiken/mlterm#63.
* Bug fixes:
  Fix arakiken/mlterm#34.
  Fix arakiken/mlterm#35.
  Fix arakiken/mlterm#39.
  Fix arakiken/mlterm#44.
  Fix arakiken/mlterm#50.
  Fix arakiken/mlterm#51.
  Fix arakiken/mlterm#53.
  Fix https://twitter.com/isaki68k/status/1555895011991883783.
  Fix segfault in starting mlterm with --dyncomb and --otl.
netbsd-srcmastr pushed a commit that referenced this issue Apr 27, 2023
Snowball 2.2.0 (2021-11-10)
===========================

New Code Generators
-------------------

* Add Ada generator from Stephane Carrez (#135).

Javascript
----------

* Fix generated code to use integer division rather than floating point
  division.

  Noted by David Corbett.

Pascal
------

* Fix code generated for division.  Previously real division was used and the
  generated code would fail to compile with a "Incompatible types" error.

  Noted by David Corbett.

* Fix code generated for Snowball's `minint` and `maxint` constant.

Python
------

* Python 2 is no longer actively supported, as proposed on the mailing list:
  https://lists.tartarus.org/pipermail/snowball-discuss/2021-August/001721.html

* Fix code generated for division.  Previously the Python code we generated
  used integer division but rounded negative fractions towards negative
  infinity rather than zero under Python 2, and under Python 3 used floating
  point division.

  Noted by David Corbett.

Code Quality Improvements
-------------------------

* C#: An `among` without functions is now generated as `static` and groupings
  are now generated as constant.  Patches from James Turner in #146 and #147.

Code generation improvements
----------------------------

* General:

  + Constant numeric subexpressions and constant numeric tests are now
    evaluated at Snowball compile time.

Behavioural changes to existing algorithms
------------------------------------------

* german2: Fix handling of `qu` to match algorithm description.  Previously
  the implementation erroneously did `skip 2` after `qu`.  We suspect this was
  intended to skip the `qu` but that's already been done by the substring/among
  matching, so it actually skips an extra two characters.

  The implementation has always differed in this way, but there's no good
  reason to skip two extra characters here so overall it seems best to change
  the code to match the description.  This change only affects the stemming of
  a single word in the sample vocabulary - `quae` which seems to actually be
  Latin rather than German.

Optimisations to existing algorithms
------------------------------------

* arabic: Handle exception cases in the among they're exceptions to.

* greek: Remove unused slice setting, handle exception cases in the among
  they're exceptions to, and turn `substring ... among ...  or substring ...
  among ...` into a single `substring ... among ...` in cases where it is
  trivial to do so.

* hindi: Eliminate the need for variable `p`.

* irish: Minor optimisation in setting `pV` and `p1`.

* yiddish: Make use of `among` more.

Compiler
--------

* Fix handling of `len` and `lenof` being declared as names.

  For compatibility with programs written for older Snowball versions
  len and lenof stop being tokens if declared as names.  However this
  code didn't work correctly if the tokeniser's name buffer needed to
  be enlarged to hold the token name (i.e. 3 or 5 elements respectively).

* Report a clearer error if `=` is used instead of `==` in an integer test.

* Replace a single entry command list with its contents in the internal syntax
  tree.  This puts things in a more canonical form, which helps subsequent
  optimisations.

Build system
------------

* Support building on Microsoft Windows (using mingw+msys or a similar
  Unix-like environment).  Patch from Jannick in #129.

* Split out INCLUDES from CPPFLAGS so that CPPFLAGS can now be overridden by
  the user if required.  Fixes #148, reported by Dominique Leuenberger.

* Regenerate algorithms.mk only when needed rather than on every `make` run.

libstemmer
----------

* The libstemmer static library now has a `.a` extension, rather than `.o`.
  Patch from Michal Vasilek in #150.

Testsuite
---------

* stemtest: Test that numbers and numeric codes aren't damaged by any of the
  algorithms.  Regression test for #66.  Fixes #81.

* ada: Fix ada tests to fail if output differs.  There was an extra `| head
  -300` compared to other languages, which meant that the exit code of `diff`
  was ignored.  It seems more helpful (and is more consistent) not to limit how
  many differences are shown so just drop this addition.

* go: Stop thinning testdata.  It looks like we only are because the test
  harness code was based on that for rust, which was based on that for
  javascript, which was only thinning because it was reading everything into
  memory and the larger vocabulary lists were resulting in out of memory
  issues.

* javascript: Speed up stemwords.js.  Process input line-by-line rather than
  reading the whole file into memory, splitting, iterating, and creating an
  array with all the output, joining and writing out a single huge string.
  This also means we can stop thinning the test data for javascript, which we
  were only doing because the huge arabic test data file was causing out of
  memory errors.  Also drop the -p option, which isn't useful here and
  complicates the code.

* rust: Turn on optimisation in the makefile rather than the CI config.  This
  makes the tests run in about 1/5 of the time and there's really no reason to
  be thinning the testdata for rust.

Documentation
-------------

* CONTRIBUTING.rst: Improve documentation for adding a new stemming algorithm.

* Improve wording of Python docs.
netbsd-srcmastr pushed a commit that referenced this issue Apr 27, 2023
Aleph One 1.6.1
===============

This is a bugfix release:

  * Be less aggressive with mega honk fix
  * Fixes Linux builds without ffmpeg
  * Fixes a crash when a Lua script adds a side and interpolation is enabled (#321)
  * Fixes the classic aim limits checkbox
  * Adds support for FLAC playback (MML music only)
  * Fix cinematic fade in when the transition period is low
  * Works around a change in the latest SDL behavior on Macs (#398)
  * Changes the flatpak identifier to match the existing macOS bundle identifier

Aleph One 1.6
=============

This is a maintenance release, with mostly bug fixes and library and build system updates. We have also added Linux Flatpaks to
make installing the games easier in Linux.

Deprecations:

  * <shader> debug MML is deprecated and will be removed in a future release
  * The network microphone is deprecated and will be removed in a future release. The net mic key will be repurposed as a Lua
    trigger.

Changes:

  * Updated to SDL 2.24 for improved controller support
  * Aleph One now requires a C++17 compiler
  * (Lua) Allow passing nil to Monster:attack (#331)
  * (Lua) Add Platform.tag accessor (#373)
  * Remove classic aim limits from modern mouse feel; add a checkbox for classic aim limits
  * Lower default mouse sensitivity
  * Disable 3D perspective by default
  * Rename "Interface Button Sounds" checkbox to "In Game F-Key Sounds" (#255)
  * Disable transparent liquids by default in Marathon 2 and Marathon Infinity; they can be enabled by going to Environment ->
    Plugins and enabling the Transparent Liquids plugin
  * (Lua) added Game.replay for detecting whether a game is film replay

Fixes:

  * Fix teleporting in weapon effect on 60fps + (#308)
  * Fix the enhanced HUD with software renderer (#334)
  * Fix HUD not resizing when changing resolution `(#309)
  * Fix blank frame on map overlay transition in OpenGL mode (#265)
  * Restore screen flash for Marathon 1 when teleporting in (#336)
  * Fix UPnP checkbox not working in resume net game dialog (#337)
  * Fix platform textures when exporting a level
  * Fix assert thrown on network game when teleporting to another level with disconnected player (#66)
  * Fix controller feel analog/d-pad when saving prefs (#160)
  * Fix intro video not rendering when no audio stream; fixes EVIL's opening movie (#346)
  * Fix missing initialization in Lua damage_player (#348)
  * Fix the MegaHonk. RIP MegaHonk. (#339)
  * Add suport for ffmpeg 5 (#349)
  * Fix a Linux segfault at shutdown (#340)
  * Allow binding mouse buttons to forward/backward/sidestep (#333)
  * Remove the Vidmaster Oath from Marathon 1 (#355)
  * Fix MML plugin replacement font erased on first level load (#364)
  * Use GL_MIRRORED_REPEAT instead of GL_MIRRORED_REPEAT_ARB; fixes solid colored landscape on some OpenGL drivers
  * Implement transparency in the static shader; compilers now fade out as in software
  * Fix use of caps lock as run key (#294)
  * Suppress weapon flare when Lua cameras are in use (#316)
  * Fix default preference plugins disabling in Windows
  * Fix animated 3D models
  * Fix reloading physics model if not loaded from embedded map (#317)

Aleph One 1.5
=============

Changes:

  * Numerous bug fixes
  * Additional Lua functionality (see Lua.html)
  * Support for Apple Silicon
  * Improved UPnP router configuration support (now using miniupnp)
  * Adds an FOV override slider and warning
  * Adds a checkbox for native file dialogs (mac OS and Windows only)
  * Unbundles high-res plugins. See High-Res Replacements for separate download links.

1.5rc1 Pre-release
==================

Changes:

  * Bug fixes
  * Additional Lua functionality (see Lua.html)
  * macOS: support for Apple Silicon
  * Updated UPnP router configuration support (now using miniupnp)
  * Add an FOV override slider and warning
  * macOS and Windows: added a checkbox for native file dialogs
  * Removed high-res plugins from all-in-one downloads. There are many more options now than there were when we started bundling
    them, so this will give users more flexibility. Links to the old textures and a guide to hi-res textures will be provided soon;
    in the meantime the data files with hi-res plugins can be found in the 1.4 release.

Aleph One 1.4
=============

Note: This release is not network compatible with Aleph One 1.3 and earlier.

Changes:

  * Adds support for Lua ephemera: optional scripted effects like precipitation or gore, that can be turned on and off without
    affecting saved games, films, and net games
  * Adds a new "Editor" mode that integrates better with Weland for seamless visual mode editing
  * Adds new high frame rate interpolation. Choose 30 fps for authentic classic play, 60 fps or 120 fps capped, or unlimited fps
  * Adds many new Lua API functions. See Lua.html for details
  * Adds support for weapon hot keys. Hot keys 1-9 switch weapons, but can be overridden by Lua scripts; hot keys 10-12 are
    reserved for Lua scripts
  * Restores some retro/nostalgia features in the software renderer: every-other-line mode, and 8-bit color
  * MML/Lua can now set the maximum inventory on a per-difficulty level. This should add versatility for balancing difficulty in
    new scenarios

1.4rc1 Pre-release
==================

Changes since 1.4pre2:

  * add support for weapon hotkeys; hotkeys 1-9 switch weapons, but can be overridden by Lua; and another 3 hotkeys are available
    for Lua
  * restore some retro/nostalgia features in the software renderer: every-other-lines mode, and 8-bit mode
  * MML/Lua can now set the maximum inventory on a per-difficulty level
  * numerous new Lua API additions
  * bug fixes

Note: Aleph One 1.4rc1 is not network compatible with previous versions, due to the addition of hotkeys

1.4pre2 Pre-release
===================

Changes:

  * High frame rate interpolation; choose 30 fps for authentic classic play, 60 fps or 120 fps capped, or unlimited fps
  * New Lua API functions
  * Bug fixes

1.4pre1 Pre-release
===================

This is a preview release, with support for ephemera (optional scripted render effects like precipitation or extra gore) and a new
"editor" mode that integrates better with Weland 1.4.5

Aleph One 1.3.1
===============

Changes:

  * Fixes an issue saving/playing back Aleph One films using the original Marathon data files
  * Fixes wobble transfer mode glow maps

Aleph One 1.3
=============

Major Changes:

  * Uses SDL 2 for much-improved compatibility with new operating systems
  * Better support for game controllers
  * Better performance for the software renderer
  * Improved mouse control options, with settings for Classic and Modern mouse control
  * Better support for high-dpi displays
  * New controls dialog, which allows simultaneous key, mouse, and controller bindings
  * More authentic static effect when using OpenGL
  * Adds a stash for sharing info between Lua states
  * Better support for Unicode characters in Windows (should fix Rubicon X)
  * Better support for original Marathon scenarios including Trojan, which now works fully
  * A separate 64-bit Windows build is available
  * Better master volume and music volume controls
  * Video export bitrate depends on the video resolution, which leads to much improved export at 1080p with default settings
  * Mac apps are now notarized by Apple
  * Original games now default to more authentic settings on first install; high res plugins are still included but are not enabled
    by default

Aleph One 1.3rc1
================

 (No changes listed)

Aleph One 1.3b3
===============

 (No changes listed)

Aleph One 1.3b2
===============

 (No changes listed)

Aleph One 1.3b1 (2018-09-30)
===============

 (No changes listed)

Aleph One 1.3a1
===============

This is a pre-release to allow community members to assist in testing some internal code changes. Please see the Pfhorums thread if
you would like to help.

The latest stable release is: Aleph One 1.2.1

Aleph One 1.2.1
===============

The 1.2.1 release fixes a crashing bug when carnage message MML is used. Otherwise it is identical to the 1.2 release.

Aleph One 1.2
=============

The Aleph One 1.2 release features online leaderboards and game statistics, a streamlined saved-game system, and full multiplayer
support for the original Marathon game. This release also includes a number of other new features and bug fixes.

If you do not use the bundled downloads, we recommend that you update your scenario files. Each game includes a new plugin for the
online leaderboards, and the Marathon scenario includes an important compatibility fix.

Aleph One 1.2 is not network compatible with the previous stable release.

Online features

Aleph One now integrates with the online leaderboards and player stats at lhowon.org. Sign up within Aleph One to send your
Marathon, Marathon 2, and Marathon Infinity game results to lhowon.org, where you can see your overall win percentage, kill totals,
and more.

From the new "Internet" preferences section, you can register your chat name, opt in to player stats, and configure other options
relating to online play.

Saved games

Saving your game no longer stops the action until you type in a name. Each time you use a pattern buffer, a new saved game is
created. The "Continue Saved Game" dialog shows you the in-game location, date, and game time for every save. Use the "Load Other"
button to open a saved game from an earlier version of Aleph One.

Marathon compatibility

  * Cooperative play is now supported in the original Marathon scenario
  * Net games no longer use incorrect physics models
  * Goal checking in repair levels now matches the original game
  * Grenade trajectory in low-gravity levels now matches the original game
  * Certain terminals and rechargers could be activated when they shouldn't have been. You must use the 1.2 scenario data files to
    get this update.
  * If you have an existing saved game on an "exploration" level, you may need to re-explore the level before you can exit. We
    apologize for the inconvenience.

Lua

  * Additions to the Lua API:
      - Triggers.projectile_created()
      - Game.dead_players_drop_items
      - Level.index
      - Level.map_checksum
      - Line.visible_on_automap
      - Polygon.visible_on_automap
  * Additions to the Lua HUD API:
      - Level.name
      - Level.index
      - Level.map_checksum
  * Custom fields on projectiles, monsters, etc. are cleared when the object is destroyed
  * Lua error messages contain more diagnostic info
  * Player:find_action_key_target() no longer triggers side effects

Other changes

  * New preferences:
      - Camera Bobbing (Graphics) — if disabled, the camera and weapon will remain steady, to reduce motion sickness
      - Join Pregame Lobby by Default (Internet -> Pregame Lobby) — if checked, when you choose "Join Network Game", Aleph One
        automatically presses "Find Internet Game" on the next screen. Hold down the Alt (Option) key to join a local game.
      - Use Netscript in Films, Netscript File (Environment) — use these preferences to play back films of games recorded with
        netscripts. Solo Lua scripts are no longer loaded during playback of net game films.
  * Logging in to the pregame lobby uses HTTPS to protect your password
  * The editing cursor in text fields can be moved with the arrow keys or the mouse
  * Command history in the Lua/chat console can be accessed with the up and down arrow keys
  * Team color selection in the Join dialog is disabled when the game does not support teams
  * Plugin API changes:
      - Scenario compatibility, to create plugins that load only for specific scenarios
      - More combinations of items are allowed within a single plugin
  * The Plugins dialog (Preferences > Environment > Plugins) lists the components of each plugin
  * Lua HUD support is available by plugin only
  * A custom port can be used when gathering net games. The port number can only be changed by editing the XML preferences file.

Crashes fixed

  * Maps with invalid light indexes in OpenGL (Shader) renderer
  * 3D models lacking texture coordinates
  * #STATIC command in terminals (SF #580)
  * Joining a net game after a "map not found" film playback error (SF #504)

Graphical fixes

  * 3D models display even when their center point is behind player
  * Repair chip inventory is shown in Marathon Enhanced HUD plugin
  * Carnage messages during film replay are shown for the currently viewed player
  * Static, pulsate, and wobble transfer modes improved in OpenGL (Shader) renderer
  * <player light="..."> MML setting respected in OpenGL (Shader) renderer
  * Motion sensor on magnetic levels works properly when frame rate lags (SF #372)
  * Styled chat names display properly in pregame lobby game info dialog

Platform-specific fixes

  * Linux:
      - A new configure script now succeeds when optional dependencies are missing. The script also summarizes which features are
        enabled. Packagers should review the configure options, which have changed.
      - Aleph One builds and runs with more versions of FFmpeg / libav (SF #576, #578, #582)
      - Web links no longer cause Aleph One to become unresponsive on some systems
  * Mac OS X:
      - Drag-and-drop now works in 10.10 (Yosemite)
      - Updated third-party libraries
  * Windows:
      - The .save level console command successfully overwrites existing files
      - Updated third-party libraries

Other fixes

  * MML from solo Lua plugins is no longer loaded after all other plugins
  * Plugins ignore references to non-existent files
  * Popping is reduced in certain ambient sounds
  * Various MML settings are correctly reset when changing levels
  * Some common but unhelpful messages are no longer written to the log file
  * File-overwrite dialogs respect the "Hide file extensions" preference
  * The first save in a cooperative game is less likely to fail
  * Saving a game creates fewer temporary files
  * Solo Lua is loaded when continuing a saved game even when the map file is missing
  * Joystick/mouse buttons mapped to map or volume controls are no longer ignored
  * UPnP configuration now works with more routers
netbsd-srcmastr pushed a commit that referenced this issue May 5, 2023
What's Changed

    Run CI on mater branch by @regen100 in #57
    Use PDM by @regen100 in #66
    Update CI and CD by @regen100 in #67
    Update pygls by @regen100 in #68
    Support Python 3.11 by @regen100 in #69
netbsd-srcmastr pushed a commit that referenced this issue Jun 3, 2023
Upstream changes:
2.71     2023-04-05

- The docs for the Screen output were never updated after the changes in 2.50,
  when it reverted back to using STDOUT or STDERR directly. This led to a lot
  of the docs being confusing and wrong. Reported by @mauke. GH #65, #66, and
  #67.
netbsd-srcmastr pushed a commit that referenced this issue Jun 18, 2023
# fansi Release Notes

## v1.0.4

CRAN compiled code warning suppression release.

* Fix void function declarations and definitions.
* Change `sprintf` to `snprintf`.

## v1.0.3

* Address problem uncovered by gcc-12 linters, although the issue itself could
  not manifest due to redundancy of checks in the code.

## v1.0.0-2

This is a major release and includes some behavior changes.

### Features

* New functions:
    * [#26](brodieG/fansi#26) Replacement forms of
      `substr_cl` (i.e `substr_ctl<-`).
    * `state_at_end` to compute active state at end of a string.
    * `close_state` to generate a closing sequence given an active state.
    * [#31](brodieG/fansi#31) `trimws_ctl` as an
      equivalent to `trimws`.
    * [#64](brodieG/fansi#64) `normalize_sgr` converts
      compound _Control Sequences_ into normalized form (e.g. "ESC[44;31m"
      becomes "ESC[31mESC[44m") for better compatibility with
      [`crayon`](https://github.com/r-lib/crayon).  Additionally, most functions
      gain a `normalize` parameter so that they may return their output in
      normalized form (h/t @krlmlr).
* [#74](brodieG/fansi#74 and related
  functions are now all-C instead of a combination of C offset computations and
  R level `substr` operations.  This greatly improves performance, particularly
  for vectors with many distinct strings.  Despite documentation claiming
  otherwise, `substr_ctl` was quite slow in that case.
* [#66](brodieG/fansi#66) Improved grapheme support,
  including accounting for them in `type="width"` mode, as well as a
  `type="graphemes"` mode to measure in graphemes instead of characters.
  Implementation is based on heuristics designed to work in most common use
  cases.
* `html_esc` gains a `what` parameter to indicate which HTML special characters
  should be escaped.
* Many functions gain `carry` and `terminate` parameters to control how `fansi`
  generated substrings interact with surrounding formats.
* [#71](brodieG/fansi#71) Functions that write SGR and
  OSC are now more parsimonious (see "Behavior Changes" below).
* [#73](brodieG/fansi#73) Default parameter values
  retrieved with `getOption` now always have explicit fallback values defined
  (h/t @gadenbui).
* Better warnings and error messages, including more granular messages for
  `unhandled_ctl` for adjacent _Control Sequences_.
* `term.cap` parameter now accepts "all" as value, like the `ctl` parameter.

### Deprecated Functions

* All the "sgr" functions (e.g., `substr_sgr`, `strwrap_sgr`) are deprecated.
  They will likely live on indefinitely, but they are of limited usefulness and
  with the added support for OSC hyperlinks their name is misleading.
* `sgr_to_html` is now `to_html` with slight modifications to semantics; the old
  function remains and does not warn about unescaped "<" or ">" in the
  input string.

### Behavior Changes

The major intentional behavior change is to default `fansi` to always recognize
true color CSI SGR sequences (e.g. `"ESC[38;2;128;50;245m"`).  The prior
default was to match the active terminal capabilities, but it is unlikely that
the intent of a user manipulating a string with truecolor sequences is to
interpret them incorrectly, even if their terminal does.  `fansi` will continue
to warn in this case.  To keep the pre-1.0 behavior add `"old"` to the
`term.cap` parameter.

Additionally, `to_html` will now warn if it encounters unescaped HTML special
character "<" or ">" in the input string.

Finally, the 1.0 release is an extensive refactoring of many parts of the
SGR and OSC hyperlink controls (_Special Sequences_) intake and output
algorithms.  In some cases this means that some `fansi` functions will output
_Special Sequences_ slightly differently than they did before.  In almost all
cases the rendering of the output should remain unchanged, although there are
some corner cases with changes (e.g. in `strwrap_ctl` SGRs embedded in
whitespace sequences don't break the sequence).

The changes are a side effect of applying more consistent treatment of corner
cases around leading and trailing control sequences and (partially) invalid
control sequences.  Trailing _Special Sequences_ in the output is now omitted as
it would be immediately closed (assuming `terminate=TRUE`, the default).
Leading SGR is interpreted and re-output.

Normally output consistency alone would not be a reason to change behavior, but
in this case the changes should be almost always undetectable in the
**rendered** output, and maintaining old inconsistent behavior in the midst of a
complete refactoring of the internals was beyond my patience.  I apologize if
these behavior changes adversely affect your programs.

> WARNING: we will strive to keep rendered appearance of `fansi` outputs
> consistent across releases, but the exact bytes used in the output of _Special
> Sequences_ may change.

Other changes:

* Tests may no longer pass with R < 4.0 although the package should still
  function correctly.  This is primarily because of changes to the character
  width Unicode Database that ships with R, and many of the newly added grapheme
  tests touch parts of that database that changed (emoji).
* CSI sequences with more than one "intermediate" byte are now considered valid,
  even though they are likely to be very rare, and CSI sequences consume all
  subsequent bytes until a valid closing byte or end of string is encountered.
* `strip_ctl` only warns with malformed CSI and OSC if they are reported as
  supported via the `ctl` parameter.  If CSI and OSC are indicated as not
  supported, but two byte escapes are, the two initial bytes of CSI and OSCs
  will be stripped.
* "unknown" encoded strings are no longer translated to UTF-8 in UTF-8 locales
  (they are instead assumed to be UTF-8).
* `nchar_ctl` preserves `dim`, `dimnames`, and `names` as the base functions do.
* UTF-8 known to be invalid should not be output, even if present in input
  (UTF-8 validation is not complete, only sequences that are obviously wrong are
  detected).

### Bug Fixes

* Fix `tabs_as_spaces` to handle sequential tabs, and to perform better on very
  wide strings.
* Strings with invalid UTF-8 sequences with "unknown" declared encoding in UTF-8
  locales now cause errors instead of being silently translated into byte
  escaped versions (e.g. "\xf0\xc2" (2 bytes), used to be interpreted as
  "<f0><c2>" (four characters).  These now cause errors as they would have if
  they had had "UTF-8" declared encoding.
* In some cases true colors of form "38;2;x;x;x" and "48;2;x;x;x" would only be
  partially transcribed.

### Internal Changes

* More aggressive UTF-8 validation, also, invalid UTF-8 code points now advance
  only one byte instead of their putative width based on the initial byte.
* Reduce peak memory usage by making some intermediate buffers eligible for
  garbage collection prior to native code returning to R.
* Reworked internals to simplify buffer size computation and synchronization, in
  some cases this might cause slightly reduced performance.  Please report any
  significant performance regressions.
* `nchar_ctl(...)` is no longer a wrapper for `nchar(strip_ctl(...))` so that it
  may correctly support grapheme width calculations.
netbsd-srcmastr pushed a commit that referenced this issue Jun 26, 2023
What's Changed
 - Fixed: Release GitHub action by @AmmarAbouZor in #53
 - Added: Tags (Categories) for journal + Filter Function
   by @AmmarAbouZor in #56
 - Changed: Keep journals list in focus after closing the external editor
   by @AmmarAbouZor in #58
 - Added: Select-Tags Popup in Create/Edit Journals Prompt
   by @AmmarAbouZor in #62
 - Changed: Add Filter Keybindings To Footer by @AmmarAbouZor in #64
 - Added: Search Functions in Filter by @AmmarAbouZor in #66
 - Added: Create Cleanup Cache GitHub Action by @AmmarAbouZor in #73
 - Added: Wiki Documentation by @AmmarAbouZor in #76
 - Added: automatic version increment and CFF self-maintenance
   by @kevinmatthes in #79
 - Allow Release Action To Start Manually by @AmmarAbouZor in #83
netbsd-srcmastr pushed a commit that referenced this issue Jul 3, 2023
What's Changed

    Bump deps and tools by @gaborbernat in #56
    Add pyproject-fmt by @gaborbernat in #57
    Bump pypa/gh-action-pypi-publish from 1.6.5 to 1.7.1 by @dependabot in #60
    docs: remove (dynamic) years from copyright by @paravoid in #58
    Bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1 by @dependabot in #61
    Bump deps and tools by @gaborbernat in #62
    Bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.3 by @dependabot in #63
    Bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.5 by @dependabot in #66
    Bump deps and tools by @gaborbernat in #67
    Bump deps and tools by @gaborbernat in #70
    Drop 2.7 test by @gaborbernat in #72
    Add trusted-publish by @gaborbernat in #73
    Add 3.12 support by @gaborbernat in #74
    Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6 by @dependabot in #76
    git ls-files -z -- .github/workflows/check.yml | xargs -0 sed -i 's|3.12.0-alpha.7|3.12.0-beta.1|g' by @gaborbernat in #80
    Add ruff by @gaborbernat in #81
netbsd-srcmastr pushed a commit that referenced this issue Aug 25, 2023
Switch to GH Actions CI. by @patrickt in #41
Add the same PR template as for tree-sitter-javascript by @mjambon in #43
Update package.json to include the repository key by @msftenhanceprovenance in #50
Loosen Rust crate's tree-sitter dependency by @dcreager in #52
adding make support by @mattmassicotte in #56
feat: treat iota as predeclared identifier by @kawaemon in #58
feat: add support to parse of type parameters by @kawaemon in #57
feat: allow to put type arguments in calling expressions by @kawaemon in #59
Update C code by @aryx in #66
Document reason for statements at top level by @adonovan in #67
Make method bodies non-optional by @adonovan in #68
Fix node naming in {param,field}_declaration by @adonovan in #65
Structure Query by @mattmassicotte in #70
Remove field_identifier from keyed_element by @adonovan in #71
Generic Makefile by @mattmassicotte in #72
Bump tree-sitter version to 0.20 by @hendrikvanantwerpen in #78
Swift Package by @mattmassicotte in #79
Made body optional for method_declaration by @lmaruvada in #90
Allow GenericType to accept QualifiedType by @kawaemon in #92
feat(queries/highlight): highlight built-in functions as @function.builtin by @jimeh in #96
feat(grammar): capture comment directives by @matoous in #97
Revert "Merge pull request #97 from matoous/md/comment-directives" by @matoous in #98
feat(ci): run build & test action on PRs by @matoous in #99
fix: fix string literal rule by @SuperBo in #91
Add more types and struct/parameter fix by @amaanq in #118
Param fix by @amaanq in #119
Update identifiers and top level declarations by @amaanq in #120
Fix single import spec list without terminator by @amaanq in #122
Materialize expression_statement nodes by @josharian in #124
Formatting & CI fixes by @amaanq in #126
netbsd-srcmastr pushed a commit that referenced this issue Aug 26, 2023
1.3.0 (2023-08-23)

What's Changed

* Rename data -> selector. by @ioquatix in #67
* Spurious wakeups by @ioquatix in #66
* Don't use EPOLLONESHOT for the wakeup event. by @Math2 in #68
* Failing test case for waiting on a reused FD. by @Math2 in #69
* Always re-register epoll descriptor. by @ioquatix in #71
* Fix potential race conditions in io_uring backend. by @ioquatix in #70
* NetBSD/OpenBSD compatibility for KQueue selector, some FreeBSD fixes by
  @Math2 in #72
* Introduce correct support for compacting GC. by @ioquatix in #73
* Fix external tests by @ioquatix in #75
* Add more external tests. by @ioquatix in #74
* Run coverage tests on more Ruby versions. by @ioquatix in #76


1.3.1 (2023-08-24)

What's Changed

* Fix a weird bug with duplicate CQEs. by @ioquatix in #78


1.3.2 (2023-08-24)

What's Changed

* Ensure that every io_uring_get_sqe is used correctly. by @ioquatix in #80
* Add tests for cancellation and update pure Ruby implementation. by
  @ioquatix in #79
netbsd-srcmastr pushed a commit that referenced this issue Aug 31, 2023
Switch to GH Actions CI. by @patrickt in #41
Add the same PR template as for tree-sitter-javascript by @mjambon in #43
Update package.json to include the repository key by @msftenhanceprovenance in #50
Loosen Rust crate's tree-sitter dependency by @dcreager in #52
adding make support by @mattmassicotte in #56
feat: treat iota as predeclared identifier by @kawaemon in #58
feat: add support to parse of type parameters by @kawaemon in #57
feat: allow to put type arguments in calling expressions by @kawaemon in #59
Update C code by @aryx in #66
Document reason for statements at top level by @adonovan in #67
Make method bodies non-optional by @adonovan in #68
Fix node naming in {param,field}_declaration by @adonovan in #65
Structure Query by @mattmassicotte in #70
Remove field_identifier from keyed_element by @adonovan in #71
Generic Makefile by @mattmassicotte in #72
Bump tree-sitter version to 0.20 by @hendrikvanantwerpen in #78
Swift Package by @mattmassicotte in #79
Made body optional for method_declaration by @lmaruvada in #90
Allow GenericType to accept QualifiedType by @kawaemon in #92
feat(queries/highlight): highlight built-in functions as @function.builtin by @jimeh in #96
feat(grammar): capture comment directives by @matoous in #97
Revert "Merge pull request #97 from matoous/md/comment-directives" by @matoous in #98
feat(ci): run build & test action on PRs by @matoous in #99
fix: fix string literal rule by @SuperBo in #91
Add more types and struct/parameter fix by @amaanq in #118
Param fix by @amaanq in #119
Update identifiers and top level declarations by @amaanq in #120
Fix single import spec list without terminator by @amaanq in #122
Materialize expression_statement nodes by @josharian in #124
Formatting & CI fixes by @amaanq in #126
netbsd-srcmastr pushed a commit that referenced this issue Aug 31, 2023
1.3.0 (2023-08-23)

What's Changed

* Rename data -> selector. by @ioquatix in #67
* Spurious wakeups by @ioquatix in #66
* Don't use EPOLLONESHOT for the wakeup event. by @Math2 in #68
* Failing test case for waiting on a reused FD. by @Math2 in #69
* Always re-register epoll descriptor. by @ioquatix in #71
* Fix potential race conditions in io_uring backend. by @ioquatix in #70
* NetBSD/OpenBSD compatibility for KQueue selector, some FreeBSD fixes by
  @Math2 in #72
* Introduce correct support for compacting GC. by @ioquatix in #73
* Fix external tests by @ioquatix in #75
* Add more external tests. by @ioquatix in #74
* Run coverage tests on more Ruby versions. by @ioquatix in #76


1.3.1 (2023-08-24)

What's Changed

* Fix a weird bug with duplicate CQEs. by @ioquatix in #78


1.3.2 (2023-08-24)

What's Changed

* Ensure that every io_uring_get_sqe is used correctly. by @ioquatix in #80
* Add tests for cancellation and update pure Ruby implementation. by
  @ioquatix in #79
netbsd-srcmastr pushed a commit that referenced this issue Oct 19, 2023
Changelog

    f9d9ab2 Add drag-and-drop queue reordering, closes #34 (#80)
    981861c Add german translation. (#68)
    4d4325e Add missing launchable element. (#65)
    f482541 Allow adding/replacing of all tracks in Library by Files context menu (resolves #69)
    d7c40b5 Fix drag-n-drop beyond list end (#34), other optimisations
    d1dcc10 Fix dragging an item down (#34)
    abd7f2e New icon (#79)
    8f8e02c Remove warnings about non-existent/empty Ymuse config (resolves #70)
    30853bf Support for single-track repeat (resolves #76)
    adf6e7b Use remote icon in AppStream metadata (resolves #66)
    95c0d15 chore: release 0.22
netbsd-srcmastr pushed a commit that referenced this issue Oct 29, 2023
4.2.2
* Adding rate limit for RST_STREAM to work around CVE-2023-44487. #94

4.2.1
* This version is identical to v4.2.0 by accident.

4.2.0
* Treating HALF_CLOSED_LOCAL correctly. #90
* Ensuring that GOAWAY is sent after DATA in the client side. #89
* Test uses a random port instead of 8080.
* Breaking change: adding two optional SockAddrs to Config to be copied
  into Aux.
* Close all streams on termination. #83
* Introducing OutBodyStreamingUnmask #80
* Introducing KilledByHttp2ThreadManager instead of ThreadKilled. #79 #81
  #82
* Handle RST_STREAM with NO_ERROR. #78
* Internal changes: #74
* Breaking change: Client is generalized into (forall b. Request ->
  (Response -> IO b) -> IO b) -> IO a. The RankNTypes language extension is
  required. #72

4.1.3
* Using crypton instead of cryptonite.

4.1.2
* Removing the race of frameSender and frameReceiver in the server
  side. This fixes the loss of RST_Stream and TLS bad MAC error. #67

4.1.1
* Fixing memory-blow-up due to no flow control. #62 #66

4.1.0
* Implementing streaming from the client side. #41
* Making use of SettingsMaxFrameSize #44 #57
* Disabling flow control #55
* Fixing buffer overrun by trailers #52
* Proper use of settings
* Breaking change: the data structure of Next was changed. The http3
  package is influenced.

4.0.0
* Breaking change: HTTP2Error is redefined.
* Breaking change: FrameTypeId, SettingsKeyId and ErrorCodeId are
  removed. Use FrameType, SettingsKey and ErrorCode instead.
* A client can receive a concrete HTTP2Error.
* Catching up RFC 9113. Host: and :authority cannot disagree.
* Breaking change: Network.HTTP2 and Network.HTTP2.Priority are removed.
* Breaking change: obsoleted stuff are removed.
netbsd-srcmastr pushed a commit that referenced this issue Nov 11, 2023
1.1.13 (2023-09-18)

Merged Pull Requests

* Update chefstyle requirement from 2.0.9 to 2.1.0 #62 (dependabot[bot])
* Update chefstyle requirement from 2.1.0 to 2.1.1 #63 (dependabot[bot])
* Update chefstyle requirement from 2.1.1 to 2.1.3 #65 (dependabot[bot])
* Update chefstyle requirement from 2.1.3 to 2.2.0 #66 (dependabot[bot])
* add ruby 3.1 in verfiy pipeline #69 (skeshari12)
* INFC-158 fix build from addition of Ruby 3.0/3.1 tests for Windows #71
  (tpowell-progress)
* Bundle pristine to patch 3.1 ruby #78 (tpowell-progress)
* Expose archive format compression methods #74 (sj26)
* Allow opening archive from fd #75 (sj26)
* Add .buildkite directory to fix the build #79 (tpowell-progress)
netbsd-srcmastr pushed a commit that referenced this issue Nov 11, 2023
0.2.53 (2023-10-04)

* PD-41096 Auto-add cortex.yaml [no action required by you]

0.2.54 (2023-10-19)

* Land #66, Cleanup masm format logic

0.2.55 (2023-11-08)

* Land #67, Remove unused travis configuration
netbsd-srcmastr pushed a commit that referenced this issue Dec 14, 2023
devel/ruby-redmine51 require net-imap gem version 0.3.4 but ruby31 bundles
0.2.3.  So, it add latest version of net-imap gem 0.3.x as ruby-net-imap.

Ruby client api for Internet Message Access Protocol.


Changes from 0.2.3:

0.3.0 (2022-11-17)

What's Changed

* Added dependabot.yml for actions by @hsbt in #59
* Bump actions/checkout from 2 to 3 by @dependabot in #60
* Adding RFC licenses by @nevans in #57
* Warn when using deprecated SASL mechanisms by @nevans in #62

New Contributors

* @dependabot made their first contribution in #60

0.3.1 (2022-11-17)

What's Changed

* Add XOAUTH2 authenticator by @ssunday in #63

New Contributors

* @ssunday made their first contribution in #63

0.3.2 (2022-12-09)

What's Changed

* Support UIDPLUS extension by @hoffi in #65
* Fixes "bundle exec rake" clash with test/unit by @nevans in #67
* Fix some UIDPLUS issues by @nevans in #69
* Fixes date-time format, and adds decode_datetime by @nevans in #66
* Add SASLprep. Code generated & tested with RFC3454 by @nevans in #64
* Add the UNSELECT command by @nevans in #72
*  Fix mailbox attrs by @nevans in #73
* RFCs and references by @nevans in #71
* Nodocs and remove warning by @nevans in #70
* ResponseParser docs by @nevans in #76
* Response Data docs by @nevans in #75

New Contributors

* @hoffi made their first contribution in #65

0.3.3 (2022-12-21)

What's Changed

* Revert "Fixes "bundle exec rake", clash with test/unit" by @znz in #88

New Contributors

* @znz made their first contribution in #88

0.3.4 (2023-01-18)

What's Changed

* Net::IMAP Client docs by @nevans in #74

0.3.5 (2023-06-12)

* Fix #response documentation error, by @nevans in 87ba74e
* Add RFC3454 data, to support offline testing, by @nevans in #137
* Adds Ruby 3.2 to the CI matrix, by @petergoldstein in #99
* Use reusing workflow, by @hsbt in #151
* Decode UTF-7 more strictly, by @nobu in #152
* ️Continue testing 0.3.x branch against ruby 2.6, by @nevans in 115d190
* Fix decode utf-7 test for ruby 2.6, by @nevans in 7a60c8f
* Fix XOAUTH2 authenticator for ruby 2.6, by @nevans in bd4faa0

0.3.6 (2023-06-12)

* Fixes file permissions regression in v0.3.5 release, reported by
  @aaronjensen in #154

0.3.7 (2023-07-26)

What's Changed

* Backport: Fix for Digest MD5 bad challenges by @nobu in #160 PR for
  backport is #161
netbsd-srcmastr pushed a commit that referenced this issue Dec 19, 2023
1.059  2023-07-20

- correctly propagate the exit value of a packed executable

  Get the exit value from perl_destruct() instead of perl_run().
  These may be different, e.g. if the value of $? is set in an END block.

- clean up tests a bit
- set up GitHub CI and add cpanfile (for CI only)
- check more return codes in myldr/*.c

1.058  2023-06-12

- patch DynaLoader.pm to make intercepting DynaLoader::bootstrap work again
  for Perl >= 5.35 on Windows (see #74)

  $do_expand was changed in perl 5.36 from an (implicit) "local" variable
  to "my". This breaks how PAR::Heavy intercepts calls to
  DynaLoader::bootstrap: monkey-patching DynaLoader::bootstrap,
  DynaLoader::dl_findfile and DynaLoader::bootstrap while setting
  "local $DynaLoader::do_expand = 1".

- reorganize modules etc used in tests
- add test to run an XS module from a .par file
- add a test for loading XS "glue" DLLs

- remove unused code for packed DLLs ("pp --link ...")
  - nobody packs (non-XS) DLLs as embedded "FILE"s
  - nobody uses a $Config{version) sub directory when packing DLLs below
    "shlib/" in the zip

1.057  2022-11-29

- use a different method to mark executable built from "pp --clean ..."

  - scripts/par.pl: don't patch the string "__PASS_PAR_CLEAN__               \0" in the
    "boot" section of the executable and ...
  - myldr/boot.c: ... stop looking for the patched string
  - scripts/par.pl: add "\0CLEAN" in lieu of "\0CACHE" (and drop the 40-byte
    cache name below that) in the "trailer" section when generating a packed
    executable when META.yml indicates "--clean" was specified)
  - myldr/mktmpdir.c: allow "\0CLEAN" as an alternative to "\0CACHE"
    and set PAR_CLEAN=1 in that case
  - myldr/mktmpdir.c: implement find_par_magic() akin the one in script/par.pl

- better CLT detection in MacOS (#70) [plk <Philip@kime.org.uk>]

- use Getopt::ArgvFile with resolveEnvVars=1
  suggested by Johan Vromans (@sciurius on GitHub)

1.056  2022-09-05

- Fix #66: patch myldr/boot for "pp --clean ..." without side effects

  - make sure myldr/boot contains exactly one string of the form
    "__PASS_PAR_CLEAN__               \0" so that there are no
    duplicates that may get split on chunk boundaries
    (myldr/boot_embedded_files.c)
  - simplify patching of this string (in $loader) to
    "__PASS_PAR_CLEAN__=1             \0" in script/par.pl
  - add a test for #66 (check for ephemeral vs persistent cache directory)

- Revert "Fixes #62: rs6000_71 (AIX) "An offset in the .loader section header is too large.""

  PAR_CLEAN is set too late: at this point PAR_TEMP has already
  been set (and populated) to a persistent cache directory
  (/tmp/par-USER/cache-SHA1) instead of an ephemeral one (/tmp/par-USER/temp-PID).

- Some code cleanup
  - replace some magic numbers with constants
  - use string interpolation (instead of concatenation)
  - clean up some convoluted C code

1.055  2022-07-03

- Fix #62: rs6000_71 (AIX) "An offset in the .loader section header is too large."

  Communicate pp option "--clean" to the generated executable in a
  different way. Previously this was done by patching "__ENV_PAR_..." strings
  **in the executable being built** and interpreting these strings in
  par.pl **at runtime**. Though hacky, this seemingly worked on any OS
  (without rendering the executable invalid).
  But the only information ever passed was the value of PAR_CLEAN and this was
  gleaned at build time from the value of JSONPath $par.clean from META.yml
  in the zip (set by pp by option "--clean").
  Instead read and interpret "META.yml" in par.pl **at runtime**.

- Fix: merge PR #58 from Philip@kime.org.uk:

  Adding support for running MacOS Universal binaries created via 'lipo'
  from already pp'ed and signed thin binaries

- Make writing stuff more robust: check return value of print()
  and close() in some places.

1.054  2022-01-27

- Temporarily disable t/90-gh41.t (system("\\\\?\\some-absolute-path") fails)

1.053  2022-01-25

- Fix: merge PR #56 from from Philip Kime <Philip@kime.org.uk>:
  Updating OSX codesign fix util with fix for automatically added ad-hoc signatures on OSX 12+

- Fix: merge PR #42 from Andrew-Kulpa/master:
  Get exe size from file handle instead of path

- Fix: prevent TABs in literal makefile fragments from being expanded

- Cleanups:
  - par_findprog(): pass a copy of argument `path´ to strtok()
  - simplify searching for PAR magic
  - consolidate die()s
  - add a test for GitHub #41
  - add error message when exec'ing the custom perl fails in myldr/boot
  - untangle %require_list and %ModuleCache
netbsd-srcmastr pushed a commit that referenced this issue Feb 5, 2024
# CHANGES IN xfun VERSION 0.41

- `process_file()` will write to the file only if the processed text
  is different with the input text. This is to avoid writing files
  unnecessarily.

- `session_info()` will remove extra blank lines (thanks, @chuxinyuan,
  #82) and also omit the time zone info.

# CHANGES IN xfun VERSION 0.40

- `number_to_words()` supports decimal numbers now (thanks,
  @harshvardhaniimi, #80).

- `is_ascii()` is more robust now (thanks, @bastistician, #81).

# CHANGES IN xfun VERSION 0.39

- Fixed a bug that `protect_math()` fails to protect the starting `$$`
  that has leading white spaces.

- Added a function `strip_html()` to remove HTML tags and comments from text.

- The function `alnum_id()` will remove HTML tags and comments from
  text (using `strip_html()`) before converting it to an ID string.

- Added a function `env_option()` to retrieve an option value from
  `options()`. If the option does not exist there, check the
  environment variables. This provides a way for users to set an
  option via either `options()` or an environment variable.

# CHANGES IN xfun VERSION 0.38

- Added an object `download_cache`, which is a list of methods to
  download a URL, cache the result, retrieve the result from the
  cache, and clear the cache.

- Added an argument `default` to `url_filename()` to provide a default
  filename when it cannot be determined from the URL.

- Added a function `yaml_load()` to read YAML data when the **yaml**
  package is not available. It only supports a limited number of data
  types and is supposed to be used as a fallback method. See the help
  page `?xfun::yaml_load` for details.

- Added a function `yaml_body()` to split a document into YAML metadata and the body.

- `is_arm64()` also supports Linux now (thanks, @eitsupi, #74).

- `is_blank()` returns a logical vector of the same length as the
  input vector now, indicating if each element of the input is
  blank. Previously it returns a logical scalar indicating whether
  *all* elements are blank. If you want the old behavior, you can use
  `all(is_blank())`.

# CHANGES IN xfun VERSION 0.37

- Added a function `is_arm64()` to test the CPU type (thanks, @AlbanSagouis, #72).

- Started deprecating `xfun::isFALSE()` in favor of `base::isFALSE()`
  for R >= 3.5.0 (thanks, @mmaechler, #66); `isFALSE()` will
  eventually be removed from **xfun** when we do not need to support R
  < 3.5.0.
netbsd-srcmastr pushed a commit that referenced this issue Feb 19, 2024
pkgsrc changes:
- adapt to various upstream changes
- update for newer version of pjproject
- add unconditional depeendency on SDL
- remove pktccops and mgcp option (has to do with supporting cable headends)
- remove various 64-bit time_t fixes as upstream is finally doing these


                               [asterisk-announce] asterisk release 18.21.0


The Asterisk Development Team would like to announce
the release of asterisk-18.21.0.

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!


Change Log for Release asterisk-18.21.0
========================================

Summary:
----------------------------------------

- logger: Fix linking regression.
- Revert "core & res_pjsip: Improve topology change handling."
- menuselect: Use more specific error message.
- res_pjsip_nat: Fix potential use of uninitialized transport details
- app_if: Fix faulty EndIf branching.
- manager.c: Fix regression due to using wrong free function.
- config_options.c: Fix truncation of option descriptions.
- manager.c: Improve clarity of "manager show connected".
- make_xml_documentation: Really collect LOCAL_MOD_SUBDIRS documentation.
- general: Fix broken links.
- MergeApproved.yml:  Remove unneeded concurrency
- app_dial: Add option "j" to preserve initial stream topology of caller
- ast_coredumper: Increase reliability
- logger.c: Move LOG_GROUP documentation to dedicated XML file.
- res_odbc.c: Allow concurrent access to request odbc connections
- res_pjsip_header_funcs.c: Check URI parameter length before copying.
- config.c: Log #exec include failures.
- make_xml_documentation: Properly handle absolute LOCAL_MOD_SUBDIRS.
- app_voicemail.c: Completely resequence mailbox folders.
- sig_analog: Fix channel leak when mwimonitor is enabled.
- res_rtp_asterisk.c: Update for OpenSSL 3+.
- alembic: Update list of TLS methods available on ps_transports.
- func_channel: Expose previously unsettable options.
- app.c: Allow ampersands in playback lists to be escaped.
- uri.c: Simplify ast_uri_make_host_with_port()
- func_curl.c: Remove CURLOPT() plaintext documentation.
- res_http_websocket.c: Set hostname on client for certificate validation.
- live_ast: Add astcachedir to generated asterisk.conf.
- SECURITY.md: Update with correct documentation URL
- func_lock: Add missing see-also refs to documentation.
- app_followme.c: Grab reference on nativeformats before using it
- configs: Improve documentation for bandwidth in iax.conf.
- logger: Add channel-based filtering.
- chan_iax2.c: Don't send unsanitized data to the logger.
- codec_ilbc: Disable system ilbc if version >= 3.0.0
- resource_channels.c: Explicit codec request when creating UnicastRTP.
- doc: Update IP Quality of Service links.
- chan_pjsip: Add PJSIPHangup dialplan app and manager action
- chan_iax2.c: Ensure all IEs are displayed when dumping frame contents.
- chan_dahdi: Warn if nonexistent cadence is requested.
- stasis: Update the snapshot after setting the redirect
- ari: Provide the caller ID RDNIS for the channels
- main/utils: Implement ast_get_tid() for OpenBSD
- res_rtp_asterisk.c: Fix runtime issue with LibreSSL
- app_directory: Add ADSI support to Directory.
- core_local: Fix local channel parsing with slashes.
- Remove files that are no longer updated
- app_voicemail: Add AMI event for mailbox PIN changes.
- app_queue.c: Emit unpause reason with PauseQueueMember event.
- bridge_simple: Suppress unchanged topology change requests
- res_pjsip: Include cipher limit in config error message.
- res_speech: allow speech to translate input channel
- res_rtp_asterisk.c: Fix memory leak in ephemeral certificate creation.
- res_pjsip_dtmf_info.c: Add 'INFO' to Allow header.
- api.wiki.mustache: Fix indentation in generated markdown
- pjsip_configuration.c: Disable DTLS renegotiation if WebRTC is enabled.
- configs: Fix typo in pjsip.conf.sample.
- res_pjsip_exten_state,res_pjsip_mwi: Allow unload on shutdown
- res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
- .github: PRSubmitActions: Fix adding reviewers to PR
- .github: New PR Submit workflows
- .github: New PR Submit workflows
- res_stasis: signal when new command is queued
- ari/stasis: Indicate progress before playback on a bridge
- func_curl.c: Ensure channel is locked when manipulating datastores.
- .github: Fix job prereqs in PROpenedUpdated
- .github: Block PR tests until approved
- logger.h: Add ability to change the prefix on SCOPE_TRACE output
- Add libjwt to third-party
- res_pjsip: update qualify_timeout documentation with DNS note
- chan_dahdi: Clarify scope of callgroup/pickupgroup.
- func_json: Fix crashes for some types
- res_speech_aeap: add aeap error handling
- app_voicemail: Disable ADSI if unavailable.
- codec_builtin: Use multiples of 20 for maximum_ms
- lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
- asterisk.c: Use the euid's home directory to read/write cli history
- res_pjsip_transport_websocket: Prevent transport from being destroyed before message finishes.
- cel: add publish user event helper
- chan_console: Fix deadlock caused by unclean thread exit.
- file.c: Add ability to search custom dir for sounds
- chan_iax2: Improve authentication debugging.
- res_rtp_asterisk: fix wrong counter management in ioqueue objects
- make_buildopts_h, et. al.  Allow adding all cflags to buildopts.h
- func_periodic_hook: Add hangup step to avoid timeout
- res_stasis_recording.c: Save recording state when unmuted.
- res_speech_aeap: check for null format on response
- func_periodic_hook: Don't truncate channel name
- safe_asterisk: Change directory permissions to 755
- chan_rtp: Implement RTP glue for UnicastRTP channels
- app_queue: periodic announcement configurable start time.
- variables: Add additional variable dialplan functions.
- Restore CHANGES and UPGRADE.txt to allow cherry-picks to work

User Notes:
----------------------------------------

- ### app_dial: Add option "j" to preserve initial stream topology of caller
  The option "j" is now available for the Dial application which
  uses the initial stream topology of the caller to create the outgoing
  channels.

- ### logger: Add channel-based filtering.
  The console log can now be filtered by
  channels or groups of channels, using the
  logger filter CLI commands.

- ### chan_pjsip: Add PJSIPHangup dialplan app and manager action
  A new dialplan app PJSIPHangup and AMI action allows you
  to hang up an unanswered incoming PJSIP call with a specific SIP
  response code in the 400 -> 699 range.

- ### app_voicemail: Add AMI event for mailbox PIN changes.
  The VoicemailPasswordChange event is
  now emitted whenever a mailbox password is updated,
  containing the mailbox information and the new
  password.
  Resolves: #398

- ### res_speech: allow speech to translate input channel
  res_speech now supports translation of an input channel
  to a format supported by the speech provider, provided a translation
  path is available between the source format and provider capabilites.

- ### res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
  With this update, the PJSIP realm lengths have been extended
  to support up to 255 characters.

- ### res_stasis: signal when new command is queued
  Call setup times should be significantly improved
  when using ARI.

- ### lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
  You no longer need to select DEBUG_THREADS to use
  DETECT_DEADLOCKS.  This removes a significant amount of overhead
  if you just want to detect possible deadlocks vs needing full
  lock tracing.

- ### file.c: Add ability to search custom dir for sounds
  A new option "sounds_search_custom_dir" has been added to
  asterisk.conf that allows asterisk to search
  AST_DATA_DIR/sounds/custom for sounds files before searching the
  standard AST_DATA_DIR/sounds/<lang> directory.

- ### make_buildopts_h, et. al.  Allow adding all cflags to buildopts.h
  The "Build Options" entry in the "core show settings"
  CLI command has been renamed to "ABI related Build Options" and
  a new entry named "All Build Options" has been added that shows
  both breaking and non-breaking options.

- ### chan_rtp: Implement RTP glue for UnicastRTP channels
  The dial string option 'g' was added to the UnicastRTP channel
  which enables RTP glue and therefore native RTP bridges with those
  channels.

- ### app_queue: periodic announcement configurable start time.
  Introduce a new queue configuration option called
  'periodic-announce-startdelay' which will vary the normal (historic)
  behavior of starting the periodic announcement cycle at
  periodic-announce-frequency seconds after entering the queue to start
  the periodic announcement cycle at period-announce-startdelay seconds
  after joining the queue.  The default behavior if this config option is
  not set remains unchanged.
  Signed-off-by: Jaco Kroon <jaco at uls.co.za>

- ### variables: Add additional variable dialplan functions.
  Four new dialplan functions have been added.
  GLOBAL_DELETE and DELETE have been added which allows
  the deletion of global and channel variables.
  GLOBAL_EXISTS and VARIABLE_EXISTS have been added
  which checks whether a global or channel variable has
  been set.


Upgrade Notes:
----------------------------------------

- ### app.c: Allow ampersands in playback lists to be escaped.
  Ampersands in URLs passed to the `Playback()`,
  `Background()`, `SpeechBackground()`, `Read()`, `Authenticate()`, or
  `Queue()` applications as filename arguments can now be escaped by
  single quoting the filename. Additionally, this is also possible when
  using the `CONFBRIDGE` dialplan function, or configuring various
  features in `confbridge.conf` and `queues.conf`.

- ### pjsip_configuration.c: Disable DTLS renegotiation if WebRTC is enabled.
  The dtls_rekey will be disabled if webrtc support is
  requested on an endpoint. A warning will also be emitted.

- ### res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
  As part of this update, the maximum allowable length
  for PJSIP endpoints and relevant resources has been increased from
  40 to 255 characters. To take advantage of this enhancement, it is
  recommended to run the necessary procedures (e.g., Alembic) to
  update your schemas.


                               [asterisk-announce] asterisk release 18.20.2

The Asterisk Development Team would like to announce
the release of asterisk-18.20.2.

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!


Change Log for Release asterisk-18.20.2
========================================

Summary:
----------------------------------------

- res_rtp_asterisk: Fix regression issues with DTLS client check


                               [asterisk-announce] asterisk release 18.20.1


The Asterisk Development Team would like to announce security release
Asterisk 18.20.1.

The following security advisories were resolved in this release:
- [Path traversal via AMI GetConfig allows access to outside files](https://github.com/asterisk/asterisk/s
ecurity/advisories/GHSA-8857-hfmw-vg8f)
- [Asterisk susceptible to Denial of Service via DTLS Hello packets during call initiation](https://github
.com/asterisk/asterisk/security/advisories/GHSA-hxj9-xwr8-w8pq)
- [PJSIP logging allows attacker to inject fake Asterisk log entries ](https://github.com/asterisk/asteris
k/security/advisories/GHSA-5743-x3p5-3rg7)
- [PJSIP_HEADER dialplan function can overwrite memory/cause crash when using 'update'](https://github.com
/asterisk/asterisk/security/advisories/GHSA-98rc-4j27-74hh)


Change Log for Release asterisk-18.20.1
========================================

Summary:
----------------------------------------

- res_pjsip_header_funcs: Duplicate new header value, don't copy.
- res_pjsip: disable raw bad packet logging
- res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
- manager.c: Prevent path traversal with GetConfig.


                               [asterisk-announce] asterisk release 18.20.0

The Asterisk Development Team would like to announce
the release of asterisk-18.20.0.

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!


Change Log for Release asterisk-18.20.0
========================================

Summary:
----------------------------------------

- ari-stubs: Fix more local anchor references
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix broken documentation anchors
- res_pjsip_session: Send Session Interval too small response
- .github: Update workflow-application-token-action to v2
- app_dial: Fix infinite loop when sending digits.
- app_voicemail: Fix for loop declarations
- alembic: Fix quoting of the 100rel column
- pbx.c: Fix gcc 12 compiler warning.
- app_audiosocket: Fixed timeout with -1 to avoid busy loop.
- download_externals:  Fix a few version related issues
- main/refer.c: Fix double free in refer_data_destructor + potential leak
- sig_analog: Add Called Subscriber Held capability.
- app_macro: Fix locking around datastore access
- Revert "app_stack: Print proper exit location for PBXless channels."
- .github: Use generic releaser
- install_prereq: Fix dependency install on aarch64.
- res_pjsip.c: Set contact_user on incoming call local Contact header
- extconfig: Allow explicit DB result set ordering to be disabled.
- rest-api: Run make ari-stubs
- res_pjsip_header_funcs: Make prefix argument optional.
- pjproject_bundled: Increase PJSIP_MAX_MODULE to 38
- manager: Tolerate stasis messages with no channel snapshot.
- core/ari/pjsip: Add refer mechanism
- chan_dahdi: Allow autoreoriginating after hangup.
- audiohook: Unlock channel in mute if no audiohooks present.
- sig_analog: Allow three-way flash to time out to silence.
- res_prometheus: Do not generate broken metrics
- res_pjsip: Enable TLS v1.3 if present.
- func_cut: Add example to documentation.
- extensions.conf.sample: Remove reference to missing context.
- func_export: Use correct function argument as variable name.
- app_queue: Add support for applying caller priority change immediately.
- .github: Fix cherry-pick reminder issues
- chan_iax2.c: Avoid crash with IAX2 switch support.
- res_geolocation: Ensure required 'location_info' is present.
- Adds manager actions to allow move/remove/forward individual
  messages in a particular mailbox folder. The forward command can
  be used to copy a message within a mailbox or to another mailbox.
  Also adds a VoicemailBoxSummarry, required to retrieve message ID's.
- app_voicemail: add CLI commands for message manipulation
- res_rtp_asterisk: Move ast_rtp_rtcp_report_alloc using
  `rtp->themssrc_valid` into the scope of the rtp_i nstance lock.
- .github: Minor tweak to Asterisk Releaser
- .github: Suppress cherry-pick reminder for some situations
- sig_analog: Allow immediate fake ring to be suppressed.

User Notes:
----------------------------------------

- ### sig_analog: Add Called Subscriber Held capability.
  Called Subscriber Held is now supported for analog
  FXS channels, using the calledsubscriberheld option. This allows
  a station  user to go on hook when receiving an incoming call
  and resume from another phone on the same line by going on hook,
  without disconnecting the call.

- ### res_pjsip_header_funcs: Make prefix argument optional.
  The prefix argument to PJSIP_HEADERS is now
  optional. If not specified, all header names will be
  returned.

- ### core/ari/pjsip: Add refer mechanism
  There is a new ARI endpoint `/endpoints/refer` for referring
  an endpoint to some URI or endpoint.

- ### chan_dahdi: Allow autoreoriginating after hangup.
  The autoreoriginate setting now allows for kewlstart FXS
  channels to automatically reoriginate and provide dial tone to the
  user again after all calls on the line have cleared. This saves users
  from having to manually hang up and pick up the receiver again before
  making another call.

- ### sig_analog: Allow three-way flash to time out to silence.
  The threewaysilenthold option now allows the three-way
  dial tone to time out to silence, rather than continuing forever.

- ### res_pjsip: Enable TLS v1.3 if present.
  res_pjsip now allows TLS v1.3 to be enabled if supported by
  the underlying PJSIP library. The bundled version of PJSIP supports
  TLS v1.3.

- ### app_queue: Add support for applying caller priority change immediately.
  The 'queue priority caller' CLI command and
  'QueueChangePriorityCaller' AMI action now have an 'immediate'
  argument which allows the caller priority change to be reflected
  immediately, causing the position of a caller to move within the
  queue depending on the priorities of the other callers.

- ### Adds manager actions to allow move/remove/forward individual
    messages in a particular mailbox folder.  The forward command
    can be used to copy a message within a mailbox or to another
    mailbox. Also adds a Vo icemailBoxSummarry, required to retrieve
    message ID's.
  The following manager actions have been added
    VoicemailBoxSummary - Generate message list for a given mailbox
    VoicemailRemove - Remove a message from a mailbox folder
    VoicemailMove - Move a message from one folder to another within a mailbox
    VoicemailForward - Copy a message from one folder in one mailbox
      to another folder in another or the same mailbox.

- ### app_voicemail: add CLI commands for message manipulation
  The following CLI commands have been added to app_voicemail
  voicemail show mailbox <mailbox> <context>
  Show contents of mailbox <mailbox>@<context>
  voicemail remove <mailbox> <context> <from_folder> <messageid>
  Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>
  voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
  Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>
  voicemail forward <from_mailbox> <from_context> <from_folder>
    <messageid> <to_mailbox> <to_context> <to_ folder>
  Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
  mailbox <mailbox>@<context> <to_folder>

- ### sig_analog: Allow immediate fake ring to be suppressed.
  The immediatering option can now be set to no to suppress
  the fake audible ringback provided when immediate=yes on FXS channels.


                               [asterisk-announce] Asterisk Release 18.19.0

The Asterisk Development Team would like to announce
the release of Asterisk 18.19.0.

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!


Change Log for Release 18.19.0
========================================

Summary:
----------------------------------------

- app.h: Move declaration of ast_getdata_result before its first use
- doc: Remove obsolete CHANGES-staging and UPGRADE-staging
- .github: Updates for AsteriskReleaser
- app_voicemail: fix imap compilation errors
- res_musiconhold: avoid moh state access on unlocked chan
- utils: add lock timestamps for DEBUG_THREADS
- .github: Back out triggering PROpenedOrUpdated by label
- .github: Move publish docs to new file CreateDocs.yml
- rest-api: Updates for new documentation site
- .github: Remove result check from PROpenUpdateGateTests
- .github: Fix use of 'contains'
- .github: Add recheck label test to additional jobs
- .github: Fix recheck label typos
- .github: Fix recheck label manipulation
- .github: Allow PR submit checks to be re-run by label
- app_voicemail_imap: Fix message count when IMAP server is unavailable
- res_pjsip_rfc3326: Prefer Q.850 cause code over SIP.
- res_pjsip_session: Added new function calls to avoid ABI issues.
- app_queue: Add force_longest_waiting_caller option.
- pjsip_transport_events.c: Use %zu printf specifier for size_t.
- res_crypto.c: Gracefully handle potential key filename truncation.
- configure: Remove obsolete and deprecated constructs.
- res_fax_spandsp.c: Clean up a spaces/tabs issue
- ast-db-manage: Synchronize revisions between comments and code.
- test_statis_endpoints:  Fix channel_messages test again
- res_crypto.c: Avoid using the non-portable ALLPERMS macro.
- tcptls: when disabling a server port, we should set the accept_fd to -1.
- AMI: Add parking position parameter to Park action
- test_stasis_endpoints.c: Make channel_messages more stable
- build: Fix a few gcc 13 issues
- .github: Rework for merge approval
- ast-db-manage: Fix alembic branching error caused by #122.
- app_followme: fix issue with enable_callee_prompt=no (#88)
- sounds: Update download URL to use HTTPS.
- configure: Makefile downloader enable follow redirects.
- res_musiconhold: Add option to loop last file.
- chan_dahdi: Fix Caller ID presentation for FXO ports.
- AMI: Add CoreShowChannelMap action.
- sig_analog: Add fuller Caller ID support.
- res_stasis.c: Add new type 'sdp_label' for bridge creation.
- app_queue: Preserve reason for realtime queues
- .github: Fix issues with cherry-pick-reminder
- indications: logging changes
- .github Ignore error when adding reviewrs to PR
- .github: Update field descriptions for AsteriskReleaser
- callerid: Allow specifying timezone for date/time.
- chan_pjsip: Allow topology/session refreshes in early media state
- chan_dahdi: Fix broken hidecallerid setting.
- .github: Change title of AsteriskReleaser job
- asterisk.c: Fix option warning for remote console.
- .github: Don't add cherry-pick reminder if it's already present
- .github: Fix quoting in PROpenedOrUpdated
- .github: Add cherry-pick reminder to new PRs
- configure: fix test code to match gethostbyname_r prototype.
- res_pjsip_pubsub.c: Use pjsip version for pending NOTIFY check. (#76)
- res_sorcery_memory_cache.c: Fix memory leak
- xml.c: Process XML Inclusions recursively.
- .github: Tweak improvement issue type language.
- .github: Tweak new feature language, and move feature requests elsewhere.
- .github: Fix staleness check to only run on certain labels.

User Notes:
----------------------------------------

- ### AMI: Add parking position parameter to Park action
  New ParkingSpace parameter has been added to AMI action Park.

- ### res_musiconhold: Add option to loop last file.
  The loop_last option in musiconhold.conf now
  allows the last file in the directory to be looped once reached.

- ### AMI: Add CoreShowChannelMap action.
  New AMI action CoreShowChannelMap has been added.

- ### sig_analog: Add fuller Caller ID support.
  Additional Caller ID properties are now supported on
  incoming calls to FXS stations, namely the
  redirecting reason and call qualifier.

- ### res_stasis.c: Add new type 'sdp_label' for bridge creation.
  When creating a bridge using the ARI the 'type' argument now
  accepts a new value 'sdp_label' which will configure the bridge to add
  labels for each stream in the SDP with the corresponding channel id.

- ### app_queue: Preserve reason for realtime queues
  Make paused reason in realtime queues persist an
  Asterisk restart. This was fixed for non-realtime
  queues in ASTERISK_25732.


Upgrade Notes:
----------------------------------------

- ### app_queue: Preserve reason for realtime queues
  Add a new column to the queue_member table:
  reason_paused VARCHAR(80) so the reason can be preserved.


Closed Issues:
----------------------------------------

  - #45: [bug]: Non-bundled PJSIP check for evsub pending NOTIFY check is insufficient/ineffective
  - #55: [bug]: res_sorcery_memory_cache: Memory leak when calling sorcery_memory_cache_open
  - #64: [bug]: app_voicemail_imap wrong behavior when losing IMAP connection
  - #65: [bug]: heap overflow by default at startup
  - #66: [improvement]: Fix preserve reason of pause when Asterisk is restared for realtime queues
  - #73: [new-feature]: pjsip: Allow topology/session refreshes in early media state
  - #87: [bug]: app_followme: Setting enable_callee_prompt=no breaks timeout
  - #89: [improvement]:  indications: logging changes
  - #91: [improvement]: Add parameter on ARI bridge create to allow it to send SDP labels
  - #94: [new-feature]: sig_analog: Add full Caller ID support for incoming calls
  - #98: [new-feature]: callerid: Allow timezone to be specified at runtime
  - #100: [bug]: sig_analog: hidecallerid setting is broken
  - #102: [bug]: Strange warning - 'T' option is not compatible with remote console mode and has no effect
.
  - #104: [improvement]: Add AMI action to get a list of connected channels
  - #108: [new-feature]: fair handling of calls in multi-queue scenarios
  - #110: [improvement]: utils - add lock timing information with DEBUG_THREADS
  - #116: [bug]: SIP Reason: "Call completed elsewhere" no longer propagating
  - #120: [bug]: chan_dahdi: Fix broken presentation for FXO caller ID
  - #122: [new-feature]: res_musiconhold: Add looplast option
  - #133: [bug]: unlock channel after moh state access
  - #136: [bug]: Makefile downloader does not follow redirects.
  - #145: [bug]: ABI issue with pjproject and pjsip_inv_session
  - #155: [bug]: GCC 13 is catching a few new trivial issues
  - #158: [bug]: test_stasis_endpoints.c: Unit test channel_messages is unstable
  - #174: [bug]: app_voicemail imap compile errors
  - #200: [bug]: Regression: In app.h an enum is used before its declaration.


                               [asterisk-announce] Asterisk Release 18.18.1

The Asterisk Development Team would like to announce security release
Asterisk 18.18.1.

The following security advisories were resolved in this release:
https://github.com/asterisk/asterisk/security/advisories/GHSA-4xjp-22g4-9fxm


Change Log for Release 18.18.1
========================================

Summary:
----------------------------------------

- apply_patches: Use globbing instead of file/sort.
- apply_patches: Sort patch list before applying
- pjsip: Upgrade bundled version to pjproject 2.13.1

User Notes:
----------------------------------------

- ### res_http_media_cache: Introduce options and customize
  The res_http_media_cache module now attempts to load
  configuration from the res_http_media_cache.conf file.
  The following options were added:
    * timeout_secs
    * user_agent
    * follow_location
    * max_redirects
    * protocols
    * redirect_protocols
    * dns_cache_timeout_secs

- ### format_sln: add .slin as supported file extension
  format_sln now recognizes '.slin' as a valid
  file extension in addition to the existing
  '.sln' and '.raw'.

- ### bridge_builtin_features: add beep via touch variable
  Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
  Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
  interval in seconds will result in a periodic beep being
  played to the monitored channel upon MixMontior/Monitor
  feature start.
  If an interval less than 5 seconds is specified, the interval
  will default to 5 seconds.  If the value is set to an invalid
  interval, the default of 15 seconds will be used.

- ### app_senddtmf: Add SendFlash AMI action.
  The SendFlash AMI action now allows sending
  a hook flash event on a channel.

- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
  It is now possible to specify the MixMonitorID when calling
  the manager action: MixMonitorMute.  This will allow an
  individual MixMonitor instance to be muted via ID.
  The MixMonitorID can be stored as a channel variable using
  the 'i' MixMonitor option and is returned upon creation if
  this option is used.
  As part of this change, if no MixMonitorID is specified in
  the manager action MixMonitorMute, Asterisk will set the mute
  flag on all MixMonitor audiohooks on the channel.  Previous
  behavior would set the flag on the first MixMonitor audiohook
  found.

- ### pbx_dundi: Add PJSIP support.
  DUNDi now supports chan_pjsip. Outgoing calls using
  PJSIP require the pjsip_outgoing_endpoint option
  to be set in dundi.conf.

- ### test.c: Fix counting of tests and add 2 new tests
  The "tests" attribute of the "testsuite" element in the
  output XML now reflects only the tests actually requested
  to be executed instead of all the tests registered.
  The "failures" attribute was added to the "testsuite"
  element.
  Also added two new unit tests that just pass and fail
  to be used for testing CI itself.

- ### cli: increase channel column width
  This change increases the display width on 'core show channels'
  amd 'core show channels verbose'
  For 'core show channels', the Channel name field is increased to
  64 characters and the Location name field is increased to 32
  characters.
  For 'core show channels verbose', the Channel name field is
  increased to 80 characters, the Context is increased to 24
  characters and the Extension is increased to 24 characters.


Upgrade Notes:
----------------------------------------


Closed Issues:
----------------------------------------

  - #193: [bug]: third-party/apply-patches doesn't sort the patch file list before applying


                               [asterisk-announce] Asterisk Release 18.18.0

The Asterisk Development Team would like to announce
the release of Asterisk 18.18.0.

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!


Change Log for Release 18.18.0
========================================

Summary:
----------------------------------------

- Set up new ChangeLogs directory
- .github: Add AsteriskReleaser
- chan_pjsip: also return all codecs on empty re-INVITE for late offers
- cel: add local optimization begin event
- core: Cleanup gerrit and JIRA references. (#40)
- .github: Fix CherryPickTest to only run when it should
- .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
- .github: Remove separate set labels step from new PR
- .github: Refactor CP progress and add new PR test progress
- res_pjsip: mediasec: Add Security-Client headers after 401
- .github: Add cherry-pick test progress labels
- LICENSE: Update link to trademark policy.
- chan_dahdi: Add dialmode option for FXS lines. (#36)
- .github: Update issue templates
- .github: Remove unnecessary parameter in CherryPickTest
- Initial GitHub PRs
- Initial GitHub Issue Templates
- pbx_dundi: Fix PJSIP endpoint configuration check.
- Revert "app_queue: periodic announcement configurable start time."
- pbx_dundi: Add PJSIP support.
- res_pjsip_stir_shaken: Fix JSON field ordering and disallowed TN characters.
- install_prereq: Add Linux Mint support.
- chan_pjsip: fix music on hold continues after INVITE with replaces
- voicemail.conf: Fix incorrect comment about #include.
- app_queue: Fix minor xmldoc duplication and vagueness.
- test.c: Fix counting of tests and add 2 new tests
- loader.c: Minor module key check simplification.
- ael: Regenerate lexers and parsers.
- res_calendar: output busy state as part of show calendar.
- bridge_builtin_features: add beep via touch variable
- res_mixmonitor: MixMonitorMute by MixMonitor ID
- format_sln: add .slin as supported file extension
- app_queue: periodic announcement configurable start time.
- func_json: Fix JSON parsing issues.
- app_dial: Fix DTMF not relayed to caller on unanswered calls.
- make_version: Strip svn stuff and suppress ref HEAD errors
- configure: fix detection of re-entrant resolver functions
- cli: increase channel column width
- res_agi: RECORD FILE plays 2 beeps.
- app_senddtmf: Add SendFlash AMI action.
- contrib: rc.archlinux.asterisk uses invalid redirect.
- main/iostream.c: fix build with libressl
- res_http_media_cache: Introduce options and customize

User Notes:
----------------------------------------

- ### cel: add local optimization begin event
  The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
  by itself or in conert with the existing
  AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.

- ### chan_dahdi: Add dialmode option for FXS lines. (#36)
  A "dialmode" option has been added which allows
  specifying, on a per-channel basis, what methods of
  subscriber dialing (pulse and/or tone) are permitted.
  Additionally, this can be changed on a channel
  at any point during a call using the CHANNEL
  function.

- ### pbx_dundi: Add PJSIP support.
  DUNDi now supports chan_pjsip. Outgoing calls using
  PJSIP require the pjsip_outgoing_endpoint option
  to be set in dundi.conf.

- ### cli: increase channel column width
  This change increases the display width on 'core show channels'
  amd 'core show channels verbose'
  For 'core show channels', the Channel name field is increased to
  64 characters and the Location name field is increased to 32
  characters.
  For 'core show channels verbose', the Channel name field is
  increased to 80 characters, the Context is increased to 24
  characters and the Extension is increased to 24 characters.

- ### app_senddtmf: Add SendFlash AMI action.
  The SendFlash AMI action now allows sending
  a hook flash event on a channel.

- ### res_http_media_cache: Introduce options and customize
  The res_http_media_cache module now attempts to load
  configuration from the res_http_media_cache.conf file.
  The following options were added:
    * timeout_secs
    * user_agent
    * follow_location
    * max_redirects
    * protocols
    * redirect_protocols
    * dns_cache_timeout_secs

- ### test.c: Fix counting of tests and add 2 new tests
  The "tests" attribute of the "testsuite" element in the
  output XML now reflects only the tests actually requested
  to be executed instead of all the tests registered.
  The "failures" attribute was added to the "testsuite"
  element.
  Also added two new unit tests that just pass and fail
  to be used for testing CI itself.

- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
  It is now possible to specify the MixMonitorID when calling
  the manager action: MixMonitorMute.  This will allow an
  individual MixMonitor instance to be muted via ID.
  The MixMonitorID can be stored as a channel variable using
  the 'i' MixMonitor option and is returned upon creation if
  this option is used.
  As part of this change, if no MixMonitorID is specified in
  the manager action MixMonitorMute, Asterisk will set the mute
  flag on all MixMonitor audiohooks on the channel.  Previous
  behavior would set the flag on the first MixMonitor audiohook
  found.

- ### bridge_builtin_features: add beep via touch variable
  Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
  Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
  interval in seconds will result in a periodic beep being
  played to the monitored channel upon MixMontior/Monitor
  feature start.
  If an interval less than 5 seconds is specified, the interval
  will default to 5 seconds.  If the value is set to an invalid
  interval, the default of 15 seconds will be used.

- ### format_sln: add .slin as supported file extension
  format_sln now recognizes '.slin' as a valid
  file extension in addition to the existing
  '.sln' and '.raw'.


Upgrade Notes:
----------------------------------------

- ### cel: add local optimization begin event
  The existing AST_CEL_LOCAL_OPTIMIZE can continue
  to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
  can be ignored if desired.


Closed Issues:
----------------------------------------

  - #35: [New Feature]: chan_dahdi: Allow disabling pulse or tone dialing
  - #39: [Bug]: Remove .gitreview from repository.
  - #43: [Bug]: Link to trademark policy is no longer correct
  - #48: [bug]: res_pjsip: Mediasec requires different headers on 401 response
  - #52: [improvement]: Add local optimization begin cel event

### For more details, see:
https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-18.18.0.md


                            [asterisk-announce] Asterisk 18.17.1 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.17.1.

The release of Asterisk 18.17.1 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30469 - res_pjsip_pubsub: Regression for
      subscription shutdowns
      (Reported by N A)
 * ASTERISK-30472 - pbx_ael: Literal usage for variables broken
      (Reported by isrl)

For a full list of changes in this release, please see the ChangeLog:
https://downloads.asterisk.org/pub/telephony/asterisk/ChangeLog-18.17.1

Thank you for your continued support of Asterisk!


                            [asterisk-announce] Asterisk 18.17.0 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.17.0.

The release of Asterisk 18.17.0 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

New Features made in this release:
-----------------------------------
 * ASTERISK-29810 - app_signal: Add channel signaling
      applications
      (Reported by N A)
 * ASTERISK-30262 - res_pjsip_session: Allow a context to be
      specified for overlap dialing
      (Reported by N A)
 * ASTERISK-30319 - Add BYE Reason support for SIP
      (Reported by Igor Goncharovsky)
 * ASTERISK-30180 - app_broadcast: Add a channel audio
      multicasting application
      (Reported by N A)

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-27830 - Asterisk crashes on Invalid UTF-8 string
      (Reported by AvayaXAsterisk)
 * ASTERISK-30354 - chan_iax2: Lack of formats prior to
      receiving voice frames causes jitterbuffer to stall
      (Reported by N A)
 * ASTERISK-30162 - when chan_iax is used to relay calls, no
      ringing indication is played
      (Reported by Jaco Kroon)
 * ASTERISK-30424 - pjproject_bundled: cross-compilation broken
      when ssl autodetected
      (Reported by Nick French)
 * ASTERISK-30388 - res_phoneprov: Stale SERVER variable when
      multi-homed
      (Reported by cmaj)
 * ASTERISK-30419 - pjsip: Crash when sending NOTIFY in PJSIP 2.13
      (Reported by Ross Beer)
 * ASTERISK-30417 - Copy/Paste error in UnpauseQueueMember
      (Reported by Sean Bright)
 * ASTERISK-30406 - pbx_ael: Global variables are not expanded.
      (Reported by Sean Bright)
 * ASTERISK-29604 - ari: Segfault with lots of calls
      (Reported by Danila Evgrafov)
 * ASTERISK-30391 - res_rtp_asterisk: Issue with transcoding
      g722 after MES changes
      (Reported by George Joseph)
 * ASTERISK-30345 - loader.c: Modules that decline to load
      cannot be reloaded
      (Reported by N A)
 * ASTERISK-30379 - http: fix NULL pointer dereference while
      enable_status on TLS-only
      (Reported by Boris P. Korzun)
 * ASTERISK-30375 - res_http_media_cache: Crash when URL has no
      path component.
      (Reported by Sean Bright)
 * ASTERISK-30351 - manager: Originate variables are not added
      when setvar used in manager.conf
      (Reported by Sebastian
      Gutierrez)
 * ASTERISK-30369 - res_pjsip: Websockets from same IP shut down
      when they shouldn't be
      (Reported by Joshua C. Colp)
 * ASTERISK-30367 - pbx: Fix outdated channel snapshots with pbx_exec
      (Reported by N A)
 * ASTERISK-28767 - chan_pjsip: Caller ID not used when checking
      for extension, callerid supplement executed too late
      (Reported by Oleg)
 * ASTERISK-30350 - res_pjsip_sdp_rtp: rtp_timeout_hold is not
      used when moh_passthrough has call on hold
      (Reported by Benjamin Keith Ford)
 * ASTERISK-30240 - app voicemail odbc build error with gcc 11.1
      (Reported by Michael Bradeen)
 * ASTERISK-30100 - res_pjsip: Path is ignored on INVITE to endpoint
      (Reported by Yury Kirsanov)
 * ASTERISK-30198 - Error `Too many open files` occurs after
      about ~8000 calls when using mixmonitor
      (Reported by Julien Alie)

Improvements made in this release:
-----------------------------------
 * ASTERISK-30411 - app_read: add option to include terminating
      digit on empty, terminated strings
      (Reported by Michael Bradeen)
 * ASTERISK-30405 - app_directory: Add 's' option to skip
      channel call
      (Reported by Michael Bradeen)
 * ASTERISK-30422 - app_senddtmf: add the option for senddtmf to answer
      (Reported by Michael Bradeen)
 * ASTERISK-30325 - Upgrade Asterisk to bundled pjproject 2.13
      (Reported by Stanislav Abramenkov)
 * ASTERISK-30404 - app_directory: Add reading directory
      configuration from custom file
      (Reported by Michael Bradeen)
 * ASTERISK-29913 - func_json: Adds multi-level and array
      parsing to JSON_DECODE
      (Reported by N A)
 * ASTERISK-30353 - func_frame_trace: Print text for text frames
      (Reported by N A)
 * ASTERISK-30361 - json.h: Add missing
      ast_json_object_real_get
      (Reported by N A)
 * ASTERISK-30280 - Create capability to assign a Media
      Experience Score to RTP streams
      (Reported by George Joseph)
 * ASTERISK-30332 - func_callerid: Warn if invalid redirecting
      reason provided
      (Reported by N A)

For a full list of changes in this release, please see the ChangeLog:
https://downloads.asterisk.org/pub/telephony/asterisk/ChangeLog-18.17.0

Thank you for your continued support of Asterisk!


               [asterisk-announce] Asterisk 16.29.1, 18.15.1, 19.7.1, 20.0.1 Now Available

The Asterisk Development Team would like to announce the release of
Asterisk 16.29.1, 18.15.1, 19.7.1, and 20.0.1.

The release of Asterisk 16.29.1, 18.15.1, 19.7.1, and 20.0.1 resolves issues reported by the
community and would have not been possible without your participation.Thank you!

The following issue is resolved in this release:

Bugs fixed in this release:
-----------------------

[ASTERISK-30103 <https://issues.asterisk.org/jira/browse/ASTERISK-30103>]
chan_ooh323 vulnerability in calling/called party IE (Reported By: Michael
Bradeen)

[ASTERISK-30176 <https://issues.asterisk.org/jira/browse/ASTERISK-30176>]
GetConfig can read files outside of Asterisk (Reported By: shawty)

[ASTERISK-30244 <https://issues.asterisk.org/jira/browse/ASTERISK-30244>]
Occasional crash when TCP/TLS connection terminated and subscription
persistence is removed (Reported By: nappsoft)

[ASTERISK-30338 <https://issues.asterisk.org/jira/browse/ASTERISK-30338>]
Backport 2.13 security fixes from pjproject


                            [asterisk-announce] Asterisk 18.15.0 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.15.0.

The release of Asterisk 18.15.0 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

New Features made in this release:
-----------------------------------
 * ASTERISK-30037 - Add test support to calling external processes
      (Reported by Philip Prindeville)
 * ASTERISK-30161 - locks: add AMI event for deadlock
      (Reported by N A)
 * ASTERISK-30211 - app_confbridge: Add end_marked_any option
      (Reported by N A)
 * ASTERISK-30186 - res_pjsip: Add support for reloading TLS
      certificate and key information
      (Reported by Joshua C.  Colp)
 * ASTERISK-29899 - features: Add advanced transfer initiation options
      (Reported by N A)

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30235 - res_crypto and tests:  Memory issues and and
      uninitialized variable error
      (Reported by George Joseph)
 * ASTERISK-30234 - res_geolocation: ...may be used
      uninitialized error in geoloc_config.c
      (Reported by George Joseph)
 * ASTERISK-30215 - Inbound SIP INVITE with Geo Location causing
      a Segmentation Fault
      (Reported by Dan Cropp)
 * ASTERISK-30135 - [res_musiconhold] Allows the moh only for
      the answered call
      (Reported by sungtae kim)
 * ASTERISK-26894 - pjsip should support tel uri scheme
      (Reported by Gergely D½½ms½½di)
 * ASTERISK-30210 - func_frame_trace: Channel masquerade
      triggers assertion
      (Reported by N A)
 * ASTERISK-30190 - res_geolocation:  GEOLOC_PROFILE isn't
      returning correct values on incoming channel
      (Reported by George Joseph)
 * ASTERISK-29185 - chan_pjsip: Endpoint: allow = all is broken.
      (Reported by Alexander Traud)
 * ASTERISK-30192 - res_tonedetect: fix typo for frametype
      (Reported by N A)
 * ASTERISK-29453 - alembic: incoming_call_offer_pref and
      outgoing_call_offer_pref missing in "ps_endpoints" table
      (Reported by Daniel Th½½men)
 * ASTERISK-26826 - testsuite: Add support for Python 3
      (Reported by Joshua C. Colp)
 * ASTERISK-30167 - res_geolocation:  Refactor for issues found
      by users
      (Reported by George Joseph)
 * ASTERISK-28422 - Memory Leak in Confbridge menu
      (Reported by Ted G)
 * ASTERISK-29917 - ami: FilterList action doesn't exist
      (Reported by N A)
 * ASTERISK-30018 - app_meetme: MeetmeList AMI event not documented
      (Reported by Michael Cargile)
 * ASTERISK-30020 - ConfbridgeListRooms Event Not Documented
      (Reported by Michael Cargile)
 * ASTERISK-30151 - Documentation doesn't include info about
      "field", a 3rd required parameter.
      (Reported by Chris Young)

Improvements made in this release:
-----------------------------------
 * ASTERISK-30241 - res_pjsip_gelocation: Downgrade some NOTICE
      scope trace debugs to DEBUG level
      (Reported by N A)
 * ASTERISK-30178 - extend user_eq_phone behavior to local uri's
      (Reported by Michael Bradeen)
 * ASTERISK-30046 - Reimplement res/res_crypto.c internals with
      EVP_PKEY interface to Openssl API's
      (Reported by Philip Prindeville)
 * ASTERISK-30045 - Add test coverage to res/res_crypto.c functionality
      (Reported by Philip Prindeville)
 * ASTERISK-30185 - res_geolocation: Allow location parameters
      to be specified in profiles
      (Reported by George Joseph)
 * ASTERISK-30177 - res_geolocation:  Add option to suppress
      empty elements
      (Reported by George Joseph)
 * ASTERISK-30182 - res_geolocation: Add built-in profiles to
      use in fully dynamic configurations
      (Reported by George Joseph)
 * ASTERISK-29906 - [patch] update RLS to reflect the changes to
      the lists
      (Reported by Alexei Gradinari)
 * ASTERISK-30163 - general: fix minor formatting issues
      (Reported by N A)
 * ASTERISK-30164 - chan_iax2: Add missing option documentation
      (Reported by N A)
 * ASTERISK-30153 - logger: Improve log levels
      (Reported by N A)
 * ASTERISK-30160 - cdr.conf: Remove obsolete app_mysql reference
      (Reported by N A)
 * ASTERISK-30159 - general: Remove obsolete SVN references
      (Reported by N A)


                            [asterisk-announce] Asterisk 18.14.0 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.14.0.

The release of Asterisk 18.14.0 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

Improvements made in this release:
-----------------------------------
 * ASTERISK-30128 - Create PJSIP interface module for Geolocation
      (Reported by George Joseph)
 * ASTERISK-30127 - Create core Geolocation capability for Asterisk
      (Reported by George Joseph)
 * ASTERISK-30089 - general: fix typos
      (Reported by N A)
 * ASTERISK-30050 - Upgrade Asterisk to bundled pjproject 2.12.1
      (Reported by Stanislav Abramenkov)

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30167 - res_geolocation:  Refactor for issues found
      by users
      (Reported by George Joseph)
 * ASTERISK-29966 - pbx_variables: ast_str_strlen can be wrong
      (Reported by N A)
 * ASTERISK-29905 - OSX: bininstall launchd issue on
      cross-platfrom build
      (Reported by Sergey V. Lobanov)
 * ASTERISK-30137 - manager: Global disabled event filtered is incomplete
      (Reported by N A)
 * ASTERISK-30109 - res_pjsip: no contact-status AMI event on
      register of prune-on-boot contact that uses the same URI as
      before Asterisk restart
      (Reported by Michael Neuhauser)
 * ASTERISK-29991 - chan_dahdi, callerid: Caller ID does not
      honor presentation
      (Reported by N A)
 * ASTERISK-30126 - Spelling mistake in
      configs/samples/queues.conf.sample
      (Reported by Sam Banks)
 * ASTERISK-30029 - build: Git security vulnerability fix is sad
      with our accessing git as root during "make install"
      (Reported by Joshua C. Colp)
 * ASTERISK-29907 - res_pjsip, app_confbridge: Video call
      through ConfBridge with normal endpoints causes infinite
      loop/crash
      (Reported by N A)
 * ASTERISK-30138 - Compile failure in
      res_geolocation/geoloc_eprofile.c when optimization is enabled
      (Reported by George Joseph)
 * ASTERISK-30096 -  cel_odbc: Column type 9 (field
      'cdr:cel:eventtime') is unsupported at this time
      (Reported by Morvai Szabolcs)
 * ASTERISK-30083 - chan_iax2: Optional dependency on
      openssl/res_crypto is now mandatory
      (Reported by Dmitry Melekhov)
 * ASTERISK-30099 - test_aeap_transport: transport_connect_fail
      sporadically causes failure
      (Reported by Kevin Harwell)
 * ASTERISK-30123 - features: Update automixmon documentation to
      reflect reality
      (Reported by Trevor Peirce)
 * ASTERISK-30117 - pbx_lua: Remove compiler warnings
      (Reported by Boris P. Korzun)
 * ASTERISK-30101 - res_prometheus: Optional load
      res_pjsip_outbound_registration.so
      (Reported by Boris P.  Korzun)
 * ASTERISK-29989 - app_dial, chan_dahdi: DIALSTATUS is
      inconsistent for busy
      (Reported by N A)
 * ASTERISK-30001 - db: Removing nonexistent entries shows
      "Database entry removed"
      (Reported by N A)
 * ASTERISK-30115 - app_dial: Allow hook flashes to propogate on
      outbound dials
      (Reported by N A)
 * ASTERISK-30106 - res_calendar_icalendar: Microsoft online ICS
      calendars no longer work
      (Reported by N A)
 * ASTERISK-29822 - cli: Typing \? freezes the CLI permanently
      with remote console
      (Reported by N A)
 * ASTERISK-30072 - res_pjsip: allow TLS verification of
      wildcard cert-bearing servers
      (Reported by Kevin Harwell)
 * ASTERISK-30075 - say: Abort if channel hangs up during playback
      (Reported by N A)

New Features made in this release:
-----------------------------------
 * ASTERISK-30136 - db: Add AMI action to retrieve all keys
      beginning with a prefix
      (Reported by N A)
 * ASTERISK-30000 - chan_dahdi: Add POLARITY function
      (Reported by N A)
 * ASTERISK-30062 - cli: Add CLI command to execute a dialplan app
      (Reported by N A)
 * ASTERISK-29999 - pjsip: Get information from 200 OK INVITE
      reply headers
      (Reported by Jos½½ Lopes)
 * ASTERISK-30061 - pbx: Add pbx helper application
      (Reported by N A)


                            [asterisk-announce] Asterisk 18.13.0 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.13.0.

The release of Asterisk 18.13.0 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

Improvements made in this release:
-----------------------------------
 * ASTERISK-29906 - [patch] update RLS to reflect the changes to the lists
      (Reported by Alexei Gradinari)
 * ASTERISK-29891 - [patch] provide a display name for RLS subscriptions
      (Reported by Alexei Gradinari)
 * ASTERISK-30090 - xmldocs: Use example tags for examples
      (Reported by N A)
 * ASTERISK-30086 - res_parking: Warn when invalid parking space requested
      (Reported by N A)
 * ASTERISK-30058 - Evaluate dialplan functions and variables in agi exec
      (Reported by Shloime Rosenblum)
 * ASTERISK-30027 - ari: expose channel driver's unique id (i.e.
      Call-ID for chan_sip/chan_pjsip) in ARI channel resource
      (Reported by Moritz Fain)
 * ASTERISK-29845 - res_pjsip_outbound_registration: Show time
      remaining until registration lapses
      (Reported by N A)

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30097 - console: Recent documentation changes for
      connecting to remote console are inconsistent
      (Reported by Matthias Hensler)
 * ASTERISK-30043 - Wrong party is disconnected when
      hook-flashing on 3-way bridge
      (Reported by Josh Alberts)
 * ASTERISK-29603 - res_pjsip: UPDATE/re-INVITE not sent when
      "timers=always" is specified in pjsip.conf
      (Reported by Ray Crumrine)
 * ASTERISK-30092 - DateTime application: wrong inflection for
      one o'clock in German
      (Reported by Christof Efkemann)
 * ASTERISK-30064 - pbx: iax2 switch causes crash due to
      deadlock and assertion
      (Reported by N A)
 * ASTERISK-29981 - res_calendar: Asterisk crashes when
      starting, and will not run
      (Reported by N A)
 * ASTERISK-30039 - cli: Targeted debug on startup deadlocks and
      creates unstable system
      (Reported by N A)
 * ASTERISK-30051 - res_pjsip: No video after un-hold with
      moh_passthrough=yes
      (Reported by Maximilian Fridrich)
 * ASTERISK-24601 - [patch]Missing RFC4235 tags and attributes
      in PJSIP NOTIFY event: dialog  XML body
      (Reported by Marco Paland)
 * ASTERISK-30059 - menuselect: libxml include fails under Gentoo
      (Reported by waltermoeller)
 * ASTERISK-30060 - loader: format warnings in dev mode
      (Reported by N A)
 * ASTERISK-30065 - pjsip: Open Websocket connection is not
      reused for outgoing requests
      (Reported by LA)
 * ASTERISK-30042 - res_pjsip_transport_websocket: Registration
      over websocket returns a rewritten contact
      (Reported by Thomas Guebels)
 * ASTERISK-29993 - chan_dahdi: Operator control option borks
      both lines involved on callee disconnect
      (Reported by N A)
 * ASTERISK-30044 - GCC 12 issues
      (Reported by George Joseph)

New Features made in this release:
-----------------------------------
 * ASTERISK-30063 - app_voicemail: Add option to prevent
      deletion of messages
      (Reported by N A)
 * ASTERISK-29965 - res_pjsip_outbound_registration: Make max
      registration delay configurable
      (Reported by N A)
 * ASTERISK-30087 - res_parking: Add music on hold override option
      (Reported by N A)
 * ASTERISK-30036 - app_confbridge: Add CONFBRIDGE_CHANNELS function
      (Reported by N A)

Thank you for your continued support of Asterisk!


                            [asterisk-announce] Asterisk 18.12.1 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.12.1.

The release of Asterisk 18.12.1 resolves an issue reported by the
community and would have not been possible without your participation.

Thank you!

The following issue is resolved in this release:

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30065 - pjsip: Open Websocket connection is not
      reused for outgoing requests
      (Reported by LA)


                            [asterisk-announce] Asterisk 18.12.0 Now Available

The Asterisk Development Team would like to announce the release of Asterisk 18.12.0.

The release of Asterisk 18.12.0 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

Security bugs fixed in this release:
-----------------------------------
 * ASTERISK-29476 - res_stir_shaken: Blind SSRF vulnerabilities
      (Reported by Clint Ruoho)
 * ASTERISK-29838 - ${SQL_ESC()} not correctly escaping a terminating \
      (Reported by Leandro Dardini)
 * ASTERISK-29872 - res_stir_shaken: Resource exhaustion with large files
      (Reported by Benjamin Keith Ford)

New Features made in this release:
-----------------------------------
 * ASTERISK-29931 - Option to allow a user to not hear the join
      sound on enter but everyone else can
      (Reported by Michael Cargile)
 * ASTERISK-29968 - func_db: Add a function to return
      cardinality of keys at prefix
      (Reported by N A)
 * ASTERISK-29486 - Hint-like extension value lookup function
      without device state
      (Reported by N A)
 * ASTERISK-29941 - chan_pjsip: Add ability to send flash events
      (Reported by N A)
 * ASTERISK-29820 - cli: Add command to evaluate a function
      (Reported by N A)
 * ASTERISK-29876 - app_queue: Add music on hold option
      (Reported by N A)

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-29655 - res_pjsip_session: No video to caller if no
      camera available
      (Reported by Michael Auracher)
 * ASTERISK-29638 - res_pjsip_session: No video after early media
      (Reported by Michael Auracher)
 * ASTERISK-28518 - chan_dahdi: Caller ID FSK Erroneously Sent
      when Picking Up Dahdi Call On Hold
      (Reported by Josh Alberts)
 * ASTERISK-29990 - chan_dahdi: adding ring cadences is not
      idempotent on dahdi restart
      (Reported by N A)
 * ASTERISK-30007 - chan_iax2: Prevent crashes due to attempted
      encryption with missing secrets
      (Reported by N A)
 * ASTERISK-29728 - menuselect: Disabled by default modules that
      are enabled are always recompiled
      (Reported by N A)
 * ASTERISK-30002 - app_meetme: Don't erroneously set global
      variables when channel is NULL
      (Reported by N A)
 * ASTERISK-29994 - chan_dahdi: Round robin array size is too
      small for max number of groups
      (Reported by N A)
 * ASTERISK-22246 - Asterisk's "T" flag is ignored when used
      with "r" or "R" flags. (documentation bug)
      (Reported by Rusty Newton)
 * ASTERISK-26582 - Asterisk seems to ignore the "n" parameter
      for "disable console colorization"
      (Reported by Sebastian Gutierrez)
 * ASTERISK-29843 - Session timers get removed on UPDATE
      (Reported by Mark Petersen)
 * ASTERISK-29943 - file.c: seeking to negative file offset is
      not prevented
      (Reported by N A)
 * ASTERISK-29955 - chan_sip: SIP route header is missing on UPDATE
      (Reported by Mark Petersen)
 * ASTERISK-29842 - Do not change 180 Ringing to 183 Progress
      even if early_media already enabled
      (Reported by Mark Petersen)
 * ASTERISK-29948 - iostream: Infinite TCP timeout writing data
      (Reported by N A)
 * ASTERISK-29253 - Incorrect bridging on transfer
      (Reported by Yury Kirsanov)
 * ASTERISK-30006 - res_pjsip: UDP transport does not work when
      async_operations is greater than 1
      (Reported by Ross Beer)
 * ASTERISK-30024 - Failed to sign STIR/SHAKEN payload with
      functionality not enabled
      (Reported by Claude Diderich)
 * ASTERISK-30021 - ast_variable_list_replace_variable uses
      variable with new keyword
      (Reported by Jasper Hafkenscheid)
 * ASTERISK-30023 - cdr_adaptive_odbc: does not support DATETIME
      database columns
      (Reported by Gregory Massel)
 * ASTERISK-30015 - pjsip / WebRTC: Chrome creating large number
      of SDP attributes
      (Reported by Josh Hogan)
 * ASTERISK-26689 - res_pjsip_sdp_rtp: 183 Session in Progress.
      Disconnecting channel for lack of RTP activity
      (Reported by Dmitriy Serov)
 * ASTERISK-29929 - res_pjsip_sdp_rtp: Disconnecting channel for
      lack of RTP activity in one way sessions
      (Reported by Boris P. Korzun)
 * ASTERISK-29411 - Crash in pjsip_msg_find_hdr_by_name
      (Reported by LA)
 * ASTERISK-29535 - Segmentation fault in libasteriskpj.so.2
      (Reported by Daniel Bonazzi)
 * ASTERISK-26719 - pbx: Only up to 127 includes in a dialplan
      context (AST_PBX_MAX_STACK - 1)
      (Reported by Tzafrir Cohen)
 * ASTERISK-29986 - build: Asterisk 18.11.0 doesn't compile when
      wget isn't available
      (Reported by Stefan Ruijsenaars)
 * ASTERISK-29988 - REGRESSION: The build process is requiring
      xmllint or xmlstarlet ro be installed when it shouldn't
      (Reported by George Joseph)
 * ASTERISK-29895 - chan_iax2: Fix misaligned spacing in iax2
      show netstats printout
      (Reported by N A)
 * ASTERISK-29939 - agi: Fix xmldoc bug with set music
      (Reported by N A)
 * ASTERISK-28891 - documentation: AGICommand_set+music
      documentation arguments displayed incorreclty
      (Reported by Jonathan Harris)
 * ASTERISK-29048 - chan_iax2: "iax2 show registry" shows host
      for perceived
      (Reported by David Herselman)
 * ASTERISK-29674 - Adjust for 64bit time_t
      (Reported by Andre Heider)
 * ASTERISK-29961 - RLS: domain part of 'uri' list attribute
      mismatch with SUBSCRIBE request
      (Reported by Alexei Gradinari)
 * ASTERISK-29928 - logging messages truncated when using MUSL runtime
      (Reported by Philip Prindeville)
 * ASTERISK-29960 - ari: Retrieving stored recording can returns
      wrong file
      (Reported by Arix)
 * ASTERISK-29950 - SayNumber can handle '01' to '07', but not
      '08' or '09'
      (Reported by Jim Van Meggelen)

Improvements made in this release:
-----------------------------------
 * ASTERISK-24827 - Missing documentation for chan_dahdi dial
      string ring cadences
      (Reported by Scott Griepentrog)
 * ASTERISK-29940 - general: Add since tags to xmldocs
      (Reported by N A)
 * ASTERISK-29726 - Add Asterisk External Application Protocol
      (AEAP) implementation
      (Reported by Kevin Harwell)
 * ASTERISK-29951 - app_mf, app_sf: Return -1 on hangup
      (Reported by N A)
 * ASTERISK-29954 - app_meetme: Emit warning if conference not found
      (Reported by N A)
 * ASTERISK-29351 - Qualify pjproject 2.12 for Asterisk
      (Reported by George Joseph)
 * ASTERISK-29976 - Should Readme include information about
      install_prereq script?
      (Reported by Marcel Wagner)
 * ASTERISK-29970 - Use pkg-config to find libxml2 headers and libraries
      (Reported by Hugh McMaster)
 * ASTERISK-29980 - build: External binary modules don't use https
      (Reported by INVADE International Ltd.)
 * ASTERISK-25716 - Documentation: Document explanations and
      examples for possible values of DIALSTATUS
      (Reported by Rusty Newton)
 * ASTERISK-29967 - pbx_builtins: Add missing documentation
      (Reported by N A)


                            [asterisk-announce] Asterisk 18.11.3 Now Available

   Asterisk Development Team asteriskteam at digium.com
   Tue Apr 26 12:09:50 CDT 2022

The Asterisk Development Team would like to announce the release of Asterisk 18.11.3.

The release of Asterisk 18.11.3 resolves an issue reported by the
community and would have not been possible without your participation.

Thank you!

The following issue is resolved in this release:

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-30024 - Failed to sign STIR/SHAKEN payload with
      functionality not enabled
      (Reported by Claude Diderich)


      [asterisk-announce] Asterisk 16.25.2, 18.11.2, 19.3.2 and 16.8-cert14 Now Available (Security)

The Asterisk Development Team would like to announce security releases for
Asterisk 16, 18 and 19, and Certified Asterisk 16.8. The available releases are
released as versions 16.25.2, 18.11.2, 19.3.2 and 16.8-cert14.

The following security vulnerabilities were resolved in these versions:

* AST-2022-001: res_stir_shaken: resource exhaustion with large files
  When using STIR/SHAKEN, it½½½s possible to download files that are not
  certificates. These files could be much larger than what you would expect to
  download.

* AST-2022-002: res_stir_shaken: SSRF vulnerability with Identity header
  When using STIR/SHAKEN, it½½½s possible to send arbitrary requests like GET to
  interfaces such as localhost using the Identity header.

* AST-2022-003: func_odbc: Possible SQL Injection
  Some databases can use backslashes to escape certain characters, such as
  backticks. If input is provided to func_odbc which includes backslashes it is
  possible for func_odbc to construct a broken SQL query and the SQL query to
  fail.


                            [asterisk-announce] Asterisk 18.11.1 Now Available

   Asterisk Development Team asteriskteam at digium.com
   Tue Mar 29 19:15:43 CDT 2022

The Asterisk Development Team would like to announce the release of Asterisk 18.11.1.

The release of Asterisk 18.11.1 resolves several issues reported by the
community and would have not been possible without your participation.

Thank you!

The following issues are resolved in this release:

Bugs fixed in this release:
-----------------------------------
 * ASTERISK-29986 - build: Asterisk 18.11.0 doesn't compile when
      wget isn't available
      (Reported by Stefan Ruijsenaars)
 * ASTERISK-29988 - REGRESSION: The build process is requiring
      xmllint or xmlstarlet ro be installed when it shouldn't
      (Reported by George Joseph)


                            [asterisk-announce] Asterisk 18.11.0 Now Available

   Asterisk Development Team asteriskteam at digium.com
   Thu Mar 24 09:06:03 CDT 2022

The Asterisk Development Tea…
netbsd-srcmastr pushed a commit that referenced this issue Mar 4, 2024
Updates
    Fix negative balance getting stuck at 0.00
    Fix the search page not giving correct results when tx type is transfer and both from and to method fields are not filled up
    Fix a bug that caused unrelated transactions to show up on the home page
    On the Home page transactions with the same date can now be moved up with ',' and down with '.'
    A new option on J press to add backup locations. On q press, the latest DB will be copied there
    Added previously missing option to reset new app data location when the input is blank
    New and modified status updates for better clarity
    New offset-based scrolling when scrolling tables
    A new Activity page on 'y' press that will show activity details such as when transactions were added, deleted, edited, etc
    Popup help texts have been updated
    Dependency updates and minor performance improvements

Changes
    Fix negative balance not loading by @TheRustyPickle in #57
    Allow switching position of a tx by @TheRustyPickle in #60
    Show a new info status when switching to normal tx mode by @TheRustyPickle in #65
    Backup path by @TheRustyPickle in #66
    Update dependencies by @TheRustyPickle in #67
    Add a history page by @TheRustyPickle in #68
    Fix id swap UI bug by @TheRustyPickle in #72
    Update popup text by @TheRustyPickle in #74
netbsd-srcmastr pushed a commit that referenced this issue Apr 9, 2024
0.1.57 (2024-03-25)

* Land #66, update is_name to support underscores
netbsd-srcmastr pushed a commit that referenced this issue Apr 29, 2024
zip-archive 0.4.3.2

  * readEntry: Fix computation of modification time (#67).
    It should be a UNIX time (seconds since UNIX epoch), but
    computed relative to the local time zone, not UTC.

zip-archive 0.4.3.1

  * Use streaming decompress to identify extent of compressed data (#66).
    This fixes a problem that arises for local files with bit 3
    of the general purpose bit flag set. In this case, we don't
    get information up front about the size of the compressed
    data.  So how do we know where the compressed data ends?
    Previously, we tried to determine this by looking for the
    signature of the data descriptor. But the data descriptor doesn't
    always HAVE a signature, and it is also possible for signatures to
    occur accidentally in the compressed data itself (#65).
    Instead, we now use the streaming decompression interface from
    zlib's Internal module to identify where the compressed data
    ends. Fixes both #65 and #25.
netbsd-srcmastr pushed a commit that referenced this issue May 10, 2024
20240123
	+ improve manpage style/formatting.
	+ improve conversion of parameter of srand() when using srandom()
	  (Original-Mawk #66).
	+ minor improvement for configure script

20231210
	+ correct interator type in REcompile (Original-Mawk #73)
	+ improve configure script check for arc4random
	+ reduce compiler warnings in configure script checks

20231126
	+ fix a couple of problems reported by Coverity:
	  + modify cell_destroy() to set the string pointer to NULL if zfree()
	    might have freed it.
	  + replace a couple of strcpy's with loop.
	  + eliminate a fixed-size array in re_cmpl.c
	+ change casts in strftime() and srand() to avoid truncation on 64-bit
	  machines (report by John Naman).

20231102
	+ environment-fixes for building with Solaris 10.

20231101
	+ repair parsing for comma-separated -W options used in "#" lines
	  (report by Leif Baron).
	+ updated makedeps.sh and examples/deps.awk, to update Makefile.in
	+ remove obsolete/incorrect zero-termination assignment from fillbuff()
	  (Original-Mawk #71).
	+ updated configure macros
	+ update config.guess and config.sub

20230816
	+ start work on _CALLX
	+ da.c:  replace most of the string-literals in fprintf's with result
	  from da_op_name()
	+ da.c, mawk.h:  simplify ifdef for da_op_name(), to reuse in
	  refactoring of _CALL
	+ da.c:  dumping the function name in front of the offset is
	  distracting, use just "@"
	+ da.c: make the trace show offsets like the -Wdump option
	+ da.c:  add traces to show which function is being dumped (and
	  possibly patched).  this improves on the fix for dump_funcs() as well,
	  freeing the linked-list
	+ code.c: fix a use-after-free when no-leaks and traces are combined.
	+ code.c: add trace to be_setup()
	+ parse.y: make trace message consistent with fcall.c
	+ execute.c: eliminate a couple of comparisons
	+ change SYMTAB_TYPES to mixed enum/masks, to reduce comparisons for
	  array types.
	+ some cleanup, using NUM_ARGS and SYM_TYPE typedefs.

20230808
	+ modify input buffer-resizing to improve performance with very long
	  longs (report/testcase by Leif LeBaron).

20230804
	> fixes for nulls (patches by Miguel Pineiro Jr).
	  + support nulls in toupper() and tolower().
	  + modify str_str() to ensure lengths for key/target are large enough
	    for the memcmp() call.
	+ treat special case of failure to open input file due to too many open
	  files as a fatal error (report/testcase by Christoph Brunhuber).
	+ fix a shift/reduce conflict for length vs length()
	+ quote string-parameter in a few error-messages
	+ add MinGW-code for system() calls (Original-Mawk #51).

20230730
	+ rexp.c: do not unroll repetition into loops if the repetition applies
	  to more than one character.
	+ rexp3.c: increment machine on completing M_2JC step to fix a case
	  with infinite loop.
	+ print.c: improve parameter-passing, eliminating a duplicate check.

20230726
	+ modify makefile to install mawk-array and mawk-code manpages.

20230725
	+ use da_string more consistently in dumps.
	+ improve scanner to some type-checks of arrays versus scalars by
	  deferring this into the runtime execution (report by Rajeev V Pillai).

20230716
	+ modify scanner to accommodate scripts which use the same name for
	  some function-parameters as for a function (report by Kaz Kylheku).
	+ amend/limit special case optimization for redundant wildwards
	  (Original-Mawk #36).
	+ regenerate parse.c using byacc 20230521

20230525
	+ fix a regression for big-endian machines caused by mismatch between
	  printf/sprintf format and long integer types (Original-Mawk #69, cf:
	  20200731).

20230404
	+ add a null-pointer check in bi_mktime() (Original-Mawk #57).
	+ cast parameter of srand() to double if it is not already (patch by
	  "q3cpma", Original-Mawk #66).
	+ manpage fixes (report/suggested by David Apps).
	+ fix parsing of "--" token on command-line, from 20200828 changes
	  (report by Pavel Vinogradov).
	+ add a null-pointer check in the case for "-W" when parsing command
	  options (Original-Mawk #68).
	+ improve CF_XOPEN_SOURCE configure macro to avoid clearing the host's
	  definition for _XOPEN_SOURCE if _POSIX_C_SOURCE is defined (report
	  by A. Wilcox).
	+ modify makefile "clean" rule to remove ".i" files.
	+ modify configure script to allow for using clock_gettime vs
	  gettimeofday.

20230322
	+ remove an unwanted string/number conversion in print.c, from changes
	  in 20200717 (report by Jan Psota).
	+ reduce compiler-warnings in configure script checks.

20230215
	+ update URLs, changing ftp to https
	+ modify configure.in, moving checks for standard headers before the
	  options, to improve check for arc4random (Redhat #2167291).

20230203
	+ split up do_printf to fix build with fortified mingw stdio.h
	+ reduce compiler-warnings in configure script checks.

20221229
	+ fix shellcheck warnings in test-scripts.
	+ updated configure macros
	+ update config.guess, config.sub, and install-sh

20210824
	+ updated configure macros
	+ update config.guess and config.sub

20210528
	+ add FreeBSD build-scripts, for test-builds
	+ updated configure macros
	+ update config.guess and config.sub

20201023
	+ start work on experimental approach to interval-expressions which
	  does not involve loop-unrolling.
	+ improve type-checking for builtin-regex's by using PTR only for the
	  external-regex's.
	+ improve dump format, showing intervals in curly-brace format.

20201016
	+ improve dump format, showing the jump-targets rather than offsets.

20201009
	+ show limits for brace-expressions in dump.
	+ change RE_panic to stdarg, and log its message in trace file

20200925
	+ improve compatibility vs gawk/bwk in gsub handling of backslash by
	  only escaping backslash with itself if those backslashes happen to
	  precede a "&", e.g., "\\&" vs "\\" (Original-Mawk #14).
	+ fix a regression in recent command-line option parsing.
	+ modify configure/makefile to use .PHONY if available.
	+ review/improve example-scripts

20200918
	+ build-fix for HP-UX 11.23, which lacks #define's for maximum of
	  int64_t and uint64_t
	+ build-fix for OpenBSD, which mis-types int64_t, just like macOS.
	+ build-fix for macOS, which mis-types int64_t

20200911
	+ improve range of printf/sprintf for decimal formats by using the
	  unsigned limit if the value is positive.
	+ improve checks for command-line numeric options.
	+ allow long-options to be abbreviated.

20200828
	+ modify configure script to move gcc -Werror flags to EXTRA_CFLAGS
	  to avoid breaking configure-checks.
	+ use sprintf-buffer for intermediate output of strftime, to handle
	  extra-long format strings.
	+ modify MAWK_LONG_OPTIONS "ignore" to limit that to the "-xxx" options
	  in this set of changes, plus the existing --lint/--lint-old options.
	+ allow -Wxxx options to use long-option format as -xxx, for better
	  script-compatibility with gawk.
	+ use standard output for -Whelp, but show usage message in standard
	  error when no command arguments are given.
	+ print version for -Wversion consistently in standard output.
	+ improve use of const for making tables readonly.
	+ change -W compat to -W traditional for better script-compatibility
	  with gawk.

20200821
	+ completed first draft of mawk-code.7

20200807
	+ begin man/mawk-code.7
	+ drop noweb dependency, move docs to man/mawk-arrays.7

20200731
	+ amend fix for Debian #303825 to more closely match gawk and BWK.
	  Those use larger data types, e.g., long vs int, for limits, and also
	  provide for using int64_t and uint64_t.  Internally, mawk now uses
	  long long's where those are supported.
	+ add --help and --version options

20200724
	+ modify logic for "{0}" in rexp.c so that a left-parenthesis is not
	  trimmed when cancelling the previous token.
	+ modify RE_cat to add a dummy M_ACCEPT as a workaround for logic in
	  the new RE_init_it_cnt and RE_set_limit functions.
	+ modify regexp_system.c to work with interval-expressions.
	+ recognize gawk's --traditional and --posix as aliases for mawk's
	  -W options, as well as -r and --re-interval to improve scripting
	  compatibility.
	+ add -W compat and -W posix, using the former to replace
	  -W repetitions and the latter to replace -W posix_space
	+ enable interval-expressions by default.

20200717
	+ add configure option "--disable-interval-expr"
	> integrated/adapted changes by James Parkinson (jlp765):
	+ add regexp intervals,
	+ add tests for intervals to test/mawktest and associated
	  test/repetitions files,
	+ add -W repetitions to enable r{m,n}
	+ add man page updates to man/mawk.1

20200708
	+ update manpage comment about "nextfile" (AustinGroup #607).
	+ amend manpage comment about "fflush" (AustinGroup #634).
	+ amend manpage comment about "delete array" (AustinGroup #544).
	+ updated configure macros
	+ update config.guess and config.sub
netbsd-srcmastr pushed a commit that referenced this issue Jun 27, 2024
### 1.8.10 - 15 June 2024

 * feature: new "`--output`" option to write to a file instead of standard output (pull request [#90](https://codeberg.org/a-j-wood/pv/pulls/90)) supplied by [xmort](https://codeberg.org/xmort)

### 1.8.9 - 21 April 2024

 * feature: new "`--si`" option to display and interpret size suffixes in multiples of 1000 rather than 1024 (pull request [#85](https://codeberg.org/a-j-wood/pv/pulls/85)) supplied by [kevinruddy](https://codeberg.org/kevinruddy)
 * fix: continue producing progress output when the output is blocking writes ([#34](https://codeberg.org/a-j-wood/pv/issues/34), [#86](https://codeberg.org/a-j-wood/pv/issues/86), [#87](https://codeberg.org/a-j-wood/pv/issues/87))
 * fix: honour the _TMPDIR_ / _TMP_ environment variables again, rather than hard-coding "`/tmp`", when using a terminal lock file (originally removed in 1.8.0) ([#88](https://codeberg.org/a-j-wood/pv/issues/88))
 * i18n: corrections and missing strings added to French translations (pull request [#83](https://codeberg.org/a-j-wood/pv/pulls/83)) supplied by [Thomas Bertels](https://codeberg.org/tbertels)

### 1.8.5 - 19 November 2023

 * fix: corrected percentage formatting so it doesn't jump from 2 to 3 characters wide at 100% ([#80](https://codeberg.org/a-j-wood/pv/issues/80))
 * fix: replaced "`--remote`" mechanism, using a temporary file instead of SysV IPC, so it can work reliably even when there are multiple PV instances
 * fix: corrected compilation failure when without IPC support
 * security: addressed all issues highlighted by the software auditing tools "`splint`" and "`flawfinder`" (see "`make analyse`") ([#77](https://codeberg.org/a-j-wood/pv/issues/77))
 * cleanup: compilation warnings fixed on non-IPC and MacOS systems

### 1.8.0 - 24 September 2023

#### Features

 * feature: new "`--discard`" option to discard input as if writing to */dev/null* ([#42](https://codeberg.org/a-j-wood/pv/issues/42))
 * feature: new "`--error-skip-block`" option to make "`--skip-errors`" skip whole blocks ([#37](https://codeberg.org/a-j-wood/pv/issues/37))
 * feature: use `posix_fadvise()` like `cat`(1) does, to improve efficiency ([#39](https://codeberg.org/a-j-wood/pv/issues/39))
 * feature: new "`--enable-static`" option to "`configure`" for static builds ([#75](https://codeberg.org/a-j-wood/pv/pull/75))

#### Security

 * security: with "`--pidfile`", write to a temporary file and rename it into place, to improve security
 * security: keep self-contained copies of name and format string in PV internal state for memory safety
 * security: ignore _TMP_ / _TMPDIR_ environment variables when using a terminal lock file

#### Fixes

 * fix: only report errors about missing files when starting to transfer from them, not while calculating size, and behave more like `cat`(1) by skipping them and moving on
 * fix: auto-calculate total line count with "`--line-mode`" when all inputs are regular files
 * fix: use `clock_gettime()` in ETA calculation to cope with machine suspend/resume ([#13](https://codeberg.org/a-j-wood/pv/issues/13))
 * fix: if "`--width`" or "`--height`" were provided, do not change them when the window size changes ([#36](https://codeberg.org/a-j-wood/pv/issues/36))
 * fix: when a file descriptor position in "`--watchfd`" moves backwards, show the rate using the correct prefix ([#41](https://codeberg.org/a-j-wood/pv/issues/41))
 * fix: rewrite terminal state save/restore so state is not intermittently garbled on exit when using "`--cursor`" ([#20](https://codeberg.org/a-j-wood/pv/issues/20)), ([#24](https://codeberg.org/a-j-wood/pv/issues/24))

#### Cleanups

 * cleanup: addressed many potential issues highlighted by the software auditing tools "`splint`" and "`flawfinder`" (see new target "`make analyse`")
 * cleanup: switched the build system to GNU Automake
 * cleanup: replaced the test harness with the one native to GNU Automake
 * cleanup: added a test for terminal width detection to "`make check`"
 * cleanup: added a test to "`make check`" to ensure that "`make install`" installs everything expected
 * cleanup: replaced *AC_HEADER_TIOCGWINSZ* with *AC_CHECK_HEADERS(sys/ioctl.h)* for better MacOS compatibility ([#74](https://codeberg.org/a-j-wood/pv/issues/74))
 * cleanup: with "`--sync`", call `fsync()` instead of `fdatasync()` on incapable systems ([#73](https://codeberg.org/a-j-wood/pv/issues/73))
 * cleanup: the manual is now a static file instead of needing to be built with "`configure`"

#### Dropped items

 * dropped: dropped support for "`--enable-static-nls`"
 * dropped: removed the Linux Software Map file, as the LSM project appears to be long dead
 * dropped: will no longer publish to SourceForge as it has a chequered history and is unnecessary
 * dropped: removed project from GitHub and moved to Codeberg - see "[Give Up GitHub](https://giveupgithub.org/)"

#### Other items

 * licensing change from Artistic 2.0 to GPLv3+

### 1.7.24 - 30 July 2023

 * fix: correct terminal size detection, broken in 1.7.17 by the configuration script rewrite ([#72](https://codeberg.org/a-j-wood/pv/issues/72))
 * security: removed *DEBUG* environment variable in debug mode, added "`--debug`" instead
 * cleanup: added "`make analyse`" to run "`splint`" and "`flawfinder`" on all source files
 * cleanup: corrected detection of boolean capability
 * cleanup: word wrapping of "`--help`" output is now multi-byte locale aware
 * cleanup: adjusted "`indent`" rules to line length of 120 and reformatted code

### 1.7.18 - 28 July 2023

 * fix: language file installation had been broken by the configuration script rewrite

### 1.7.17 - 27 July 2023

 * feature: new "`--sync`" option to flush cache to disk after every write (related to [#6](https://codeberg.org/a-j-wood/pv/issues/6), to improve accuracy when writing to slow disks)
 * feature: new "`--direct-io`" option to bypass cache - implements [#29 "Option to enable *O_DIRECT*"](https://codeberg.org/a-j-wood/pv/issues/29) - requested by Romain Kang, Jacek Wielemborek
 * fix: correct byte prefix size to 2 spaces in rate display, so progress display size remains constant at low transfer rates
 * cleanup: rewrote `configure.in` as per suggestions in newer "`autoconf`" manuals
 * cleanup: replaced `header.in` with one generated by "`autoheader`", moving custom logic to a separate header file "`config-aux.h`"
 * cleanup: added copyright notice to all source files as per GNU standards
 * cleanup: changed "`--version`" output to conform to GNU standards
 * cleanup: replaced backticks with `$()` in all shell scripts that did not come from elsewhere, as backticks are deprecated and harder to read
 * cleanup: improved the output formatting of "`make test`"
 * cleanup: extended the "`make test`" mechanism to allow certain tests to be skipped on platforms that cannot support them
 * cleanup: skip the "pipe" test (for *SIGPIPE*) if GNU "`head`" is not available, so that "`make test`" on stock OpenBSD 7.3 works
 * cleanup: added a lot more tests to "`make test`"
 * cleanup: replace all calls to `sprintf()` and `snprintf()` with a new wrapper function `pv_snprintf()` to improve security and compatibility
 * cleanup: replace all calls to `strcat()` with a wrapper `pv_strlcat()` to improve security and compatibility
 * cleanup: replace all `write()` calls to the terminal with a wrapper `pv_write_retry()` for consistency
 * cleanup: tidy up and fix compilation warning in "`--watchfd`" code
 * cleanup: rewrote all local shell scripts to pass analysis by [ShellCheck](https://www.shellcheck.net)

### 1.7.0 - 17 July 2023

 * dropped: support for Red Hat Enterprise Linux and its derivatives has been dropped; removed the RPM spec file, and will no longer build binaries
 * feature: the "`--size`" option now accepts "`@filename`" to use the size of another file (pull request [#57](https://codeberg.org/a-j-wood/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
 * feature: the "`--watchfd`" option is now available on OS X (pull request [#60](https://codeberg.org/a-j-wood/pv/pull/60) supplied by [christoph-zededa](https://github.com/christoph-zededa))
 * feature: new "`--bits`" option to show bit count instead of byte count (adapted from pull request [#63](https://codeberg.org/a-j-wood/pv/pull/63) supplied by [Nick Black](https://nick-black.com))
 * feature: new "`--average-rate-window`" option, to set the window over which the average rate is calculated, also used for ETA (modified from pull request [#65](https://codeberg.org/a-j-wood/pv/pull/65) supplied by [lemonsqueeze](https://github.com/lemonsqueeze))
 * feature: the "`--watchfd`" option will now show relative filenames, if they are under the current directory (pull request [#66](https://codeberg.org/a-j-wood/pv/pull/66) supplied by [ikasty](https://github.com/ikasty))
 * fix: correction to `pv_in_foreground()` to behave as its comment block says it should, when not on a terminal - corrects [#19 "No output in Arch Linux initcpio after 1.6.6"](https://codeberg.org/a-j-wood/pv/issues/19), [#31 "No output written from inside zsh <() construct"](https://codeberg.org/a-j-wood/pv/issues/31), [#55 "pv Stopped Working in the Background"](https://codeberg.org/a-j-wood/pv/issues/55) (pull request [#64](https://codeberg.org/a-j-wood/pv/pull/64) supplied by [Michael Weiß](https://github.com/quitschbo))
 * fix: workaround for OS X 11 behaviour in configure script regarding stat64 at compile time (pull request [#57](https://codeberg.org/a-j-wood/pv/pull/57) supplied by [Dave Beckett](https://github.com/dajobe))
 * fix: workaround for macOS equivalence of stat to stat64 - patches from [Filippo Valsorda](https://github.com/FiloSottile) and [Demitri Muna](https://github.com/demitri), correcting [#33 "Fix compilation problems due to `stat64()` on Apple Silicon"](https://codeberg.org/a-j-wood/pv/issues/33)
 * fix: add burst rate limit to transfer, so rate limits are not broken by bursty traffic (pull request [#62](https://codeberg.org/a-j-wood/pv/pull/62) supplied by [Volodymyr Bychkovyak](https://github.com/vbychkoviak))
 * fix: corrected "`--force`" option so it will still output progress when not in the same process group as the owner of the terminal - corrects [#23 "No output with "`-f`" when run in background after 1.6.6"](https://codeberg.org/a-j-wood/pv/issues/23) and helps to correct [#31 "No output written from inside zsh <() construct"](https://codeberg.org/a-j-wood/pv/issues/31)
 * fix: corrected elapsed time display to show as D:HH:MM:SS after 1 day, like the ETA does - corrects [#16 "Show days in same format in ETA as in elapsed time"](https://codeberg.org/a-j-wood/pv/issues/16)
 * fix: corrected bug where percentages went down after 100% when in "`--numeric`" mode with a "`--size`" that was too small - corrects [#26 "Correct "`-n`" behaviour when going past 100% of "`-s`" size"](https://codeberg.org/a-j-wood/pv/issues/26)
 * i18n: recoded Polish translation file to UTF-8
 * i18n: removed inaccurate fuzzy translation matches
 * docs: moved all open issues into GitHub and updated the TODO list
 * docs: renamed README to README.md and altered it to Markdown format
 * docs: moved contributors from the README to docs/ACKNOWLEDGEMENTS.md
 * docs: moved TODO to TODO.md and altered it to Markdown format
 * docs: moved NEWS to NEWS.md, converted it to UTF-8, and altered it to Markdown format
netbsd-srcmastr pushed a commit that referenced this issue Jul 19, 2024
Based on PR 58426 by jonathan buschmann.

## 2.4.7 2024-05-05

### Fixed
- docs(pop): clarify --spill behavior (#445)
- fix(branch): disallow branch before subcommand (#447)

### Changed
- refactor: get gix-command via gix with command feature
- Update gix to version 0.62


## 2.4.6 2024-04-07

### Fixed
- fix(bash): fix completion for "committish"

### Changed
- docs: Update copyright year
- chore: update gix to 0.61.1
- ci: update to wix 4.0.5


## 2.4.5 2024-02-18

### Fixed
- fix: stdout from hooks (#418)

### Changed
- chore: add category and keywords to Cargo.toml
- build: exclude some paths from crate
- docs(readme): enumerate more package repositories
- chore: update dependencies


## 2.4.4 2024-02-11

### Fixed
- fix: pass stdio for interactive editing (#415)
- fix: update gix-tempfile and gix-lock to 13.1.0 (#413)

### Changed
- chore: update dependencies


## 2.4.3 2024-02-04

### Added
- feat(branch): allow delete of current branch

### Fixed
- fix(branch): delete branch config with branch
- fix: use gix-command for interactive edit (#407)
- fix: improved interactive editor diagnostics
- chore: update gix to 0.58.0 (#407)
- docs: fix dates in changelog

### Changed
- refactor(branch): use gix to rename config section
- refactor: use gix to remove stgit branch config
- refactor: use gix-command for hooks
- refactor: use non-deprecated indexmap methods
- ci: update cargo-generate-rpm to 0.14.0
- ci: update to upload-artifact@v4
- ci: restore use of IO::Pty in MacOS build


## 2.4.2 2023-12-26

### Changed
- feat(pop): allow unescaped negative patch offsets
- feat(show): allow unescaped negative patch offsets
- chore: update dependencies


## 2.4.1 2023-12-10

### Fixed
- fix(zsh): short -r opt for `stg series`

### Changed
- chore: update gix to 0.56.0
- chore: update transient dependencies


## 2.4.0 2023-10-08

### Added
- feat(delete): --all -A -U -H options
- feat(sink): -T/--above option
- feat(branch): short opts for clone and delete


## 2.3.3 2023-10-04

### Fixed
- fix(zsh): -S option for float, import, and sync
- build: avoid non-portable install options
- test: improved test script portability

### Changed
- update dependencies


## [2.3.2] 2023-08-19

### Fixed
- fix!(uncommit): check for HEAD/top mismatch (#360)
- docs: docstring spelling and formatting fixes

### Changed
- feat(uncommit): print uncommited patches
- pin serde to avoid using precompiled binary
- update dependencies


## [2.3.1] 2023-07-25

### Fixed
- fix(zsh): typo in completion help for stg commit --all
- fix: use canonical Message-ID spelling
- fix(stgit.el): recognize new empty patch marker
- fix(import): Keep first line break in body

### Changed
- update dependencies


## [2.3.0] 2023-05-25

### Removed
- import-compressed is always enabled, no longer a feature

### Added
- unofficial deb and rpm packages
- msi package for Windows

### Fixed
- fix(import): would panic without import-url feature
- fix(import): patch numbers not stripped from name

### Changed
- use bzip2-rs instead of bzip2 crate
- update dependencies


## [2.2.4] 2023-05-15

### Added
- feat: Upgrade from ancient stack state formats (#235)

### Fixed
- fix(branch): create based on remote branch (#317)
- fix(import): lost subject lines resembling header (#321)
- fix(import): subject line may be discarded

### Changed
- chore: update dependencies


## [2.2.3] 2023-04-26

### Fixed
- fix: error using on Windows (#273)
- fix: path handling for Windows compatibility
- fix: commit-msg hook run from work root
- fix: avoid "stg.exe" in usage on Windows
- fix: use gitattributes to force LF endings on Windows
- fix: wrap hooks with sh on Windows

### Changed
- chore: update to gix 0.44.0
- chore: update other dependencies


## [2.2.2] 2023-04-01

### Fixed
- fix: rebase with '@' in ref names (#306)
- fix: improved error messages for unrecognized commands


## [2.2.1] 2023-03-29

### Changed
- chore: update to clap 4.2.0
- chore: update to gix 0.43.0
- chore: pin clap minor version

### Fixed
- fix(branch): allow reuse of partially deleted branch names (#290)
- fix(branch): branch list alignment
- fix: running hooks from worktree subdir (#295)
- fix: running from linked worktree (#297)
- fix(float): correct -S in usage string
- fix: correctly show bold command/subcommand in overidden usage


## [2.2.0] 2023-02-24

### Removed
- feat!: remove short -s option for --submodules
- fix!: patch name cannot be {base} or @

### Added
- feat: patch locator syntax
- feat: locate branches using @{-N} syntax
- feat(series): Add --reverse option
- feat(series): options for patch offsets and indices
- feat(series): --no-xxx options to override display options
- feat(series): optional value for --short
- feat!: short -s option for --signoff (#245)
- feat(init): add -b/--branch option

### Changed
- fix!: use -S as short opt for --series
- feat!: constrain refresh -p to visible patches
- feat(series)!: empty patch prefix changed to *
- feat!: spell errors in lowercase
- refactor: use gitoxide instead of git2
- refactor: use time crate instead of chrono
- feat!: update to clap 4.1
- chore: update to latest dependencies

### Fixed
- fix: Error if author or committer is not configured
- fix: Use correct base directory for core.hooksPaths
- fix(rename): colliding patch names
- fix(rebase): repair rebasing to a tag (#265)
- fix(branch): switch branch with detached head
- docs: Repair docstrings being confused as html
- docs: normalized spelling for --branch value


## [2.1.0] 2022-12-12

### Added
- feat: Configurable push conflict policy (#60)
- feat: Add --committer-date-is-author-date option (#47)
- feat(import): Add --3way option (#36)
- feat(import): Add --directory option (#36)

### Changed
- feat!: Relaxed stack initialization (#238)
- feat!: Only sign stack based on stgit.gpgsign (#238)
- fix!: Allow "---" separator in messages (#243)
- feat: More descriptive push conflict message (#60)
- feat: Avoid post-edit commits when no change
- chore: Update dependencies to latest versions

### Fixed
- fix: Improved error message for uninitialized stack
- fix: Improve error for re-initialization attempt
- fix(prev): Different error message for empty stack
- fix: Accept full ref name for branches
- fix(zsh): Complete --edit and --diff for stg new


## [2.0.4] 2022-11-30

### Changed
- docs: Document configuration variables
- refactor: Use is-terminal instead of atty
- chore: Update Cargo.lock with latest dependencies.

### Fixed
- fix: Don't generate new patch name until after edit (#239)
- fix: Run shell aliases from top-level of work tree
- fix: Use GIT_PREFIX in built-in aliases


## [2.0.3] 2022-11-21

### Changed
- chore: Update Cargo.lock with latest dependencies.

### Fixed
- fix: improved git version parsing on MacOS
- fix: StGit-specific branch config handling
- docs: fixed many typos


## [2.0.2] 2022-11-17

### Changed
- chore: Update Cargo.lock with latest dependencies.
- docs(init): Add long help for `stg init`.

### Added
- feat: Enable basic support for `extensions.worktreeconfig` to unblock
  sparse checkout with partial clone (#195).

### Fixed
- docs: More inter-command links
- docs: Normalize quoting


## [2.0.1] 2022-11-07

### Changed
- chore: Update to clap 4.0.22

### Fixed
- docs(readme): Clarify static versus dynamic linking (#230)
- build: Improve Documentation build performance (#229)


## [2.0.0] 2022-11-06

### Removed
- `stg clone` is removed. Use `git clone` and `stg init` instead.
- `stg mail` is replaced with `stg email format` and `stg email send`.
- `stg refresh --spill` is replaced with dedicated `stg spill` command.
- `stg edit` no longer accepts `-O/--diff-opts`. Custom diff options is
  in conflict with editable diffs since many (most?) diff options cause
  the diff to no long be applicable.
- `stg files` no longer accepts `-O/--diff-opts`. This option was of
  marginal value since it only had a possible side effect when `--stat`
  was being used.

### Added
- `stg id` now accepts the `-b/--branch` option.
- `stg completion` command provides runtime support for shell
  completions.
- `stg completion bash` generates bash shell completion script.
- `stg completion fish` generates fish shell completion script.
- `stg completion zsh` outputs zsh shell completion script.
- `stg completion list` shows StGit commands and aliases and is used at
  completion-time by shell completion scripts.
- `stg completion man` generates man pages in asciidoc format.
- `stg email format` wraps `git format-patch` and provides a mechanism
  to generate patch emails and optional cover letter in mbox format.
- `stg email send` wraps `git send-email` and allows sending patch
  emails, either from files generated by `stg email format` or by
  specifying patches directly.
- `stg new --refresh` allows a new patch to be refreshed with changes in
  one step. The `-i/--index`, `-F/--force`, `-s/--submodules`, and
  `--no-submodules` options from `stg refresh` are also available to
  `stg new` when using `-r/--refresh`.
- `stg series` gains the `-i/--commit-id` option to display patches'
  commit ids.
- `stg show` diff output can now be limited to certain paths by
  specifying path limits on the command line.
- `stg spill` replaces `stg refresh --spill`.
- `stg version` gains `-s/--short` flag to show shortened version info.
- Added documentation for patch range syntax to stg(1) man page.
- Added `install-all` target to top-level Makefile that installs the
  executable, man pages, html pages, and shell completions.

### Changed
- StGit is now implemented entirely in Rust instead of Python.
- StGit is generally much faster; many commands are up to 4x faster.
  There was an emphasis on making informational commands such as `stg
  id`, `stg series`, and `stg top` as fast as possible to make their use
  in interactive contexts (shell prompts, IDE extensions) more
  comfortable.
- StGit error messages have been updated; many have different, and
  hopefully better, wording. Error messages are also use color (when
  color is enabled). Scripts relying on exact error messages from StGit
  will need to be updated.
- StGit output to stdout is generally more terse. Commands that change
  the stack such as `push`, `pop`, and `commit`, use sigils to denote
  the changes made to the stack. E.g. `stg commit p0..p3` will output `$
  p0..p3` where the "$" sigil means that a patch, or patch range, has
  been committed. These are all the currently used stack change sigils:
  - `+` patch was pushed
  - `-` patch was popped
  - `>` patch became the current topmost patch
  - `&` patch was updated
  - `$` patch was committed
  - `#` patch was deleted
  - `@` patch was rolled-back
  - `!` patch was hidden
- StGit aliases are now more like Git aliases. Normal aliases refer to
  StGit subcommands, but aliases prefixed with '!' are shell aliases
  that may run arbitrary commands. An example normal alias would be `git
  config stgit.alias.list 'series --description --empty'`. An example
  shell alias would be `git config stgit.alias.st '!git status
  --short'`.
- Commands such as `stg goto`, `stg push`, and `stg pop` now require
  full/correct patch names on the command line and no longer accept
  unambiguous patch name prefixes. When an inexact patch name is
  provided on the command line, the error message will now suggest
  similar valid patch names.
- Additional template search paths were added. In addition to looking
  for template files in .git/, also look in
  `$XDG_CONFIG_HOME/stgit/templates/` and `$HOME/.stgit/templates`. This
  search strategy is consistent with how git looks for the global config
  file.
- The new `--signoff` patch edit option supersedes the deprecated
  `--sign` and `--sign-by` options. `--signoff` without its optional
  value does the same thing as `--sign`, while `--signoff=<value>` does
  the same thing as `--sign-by=<value>`.
- The `--ack` and `--review` patch edit options now optionally take a
  value. The `--ack-by` and `--review-by` options are deprecated.
- `stg branch` output is now generally less verbose.
- `stg branch --describe` replaces `stg branch --description`. The
  `--description` subcommand remains supported as a hidden alias to
  `--describe`, but the description string must now be provided as its
  own argument; i.e. `--description="description string"` is no longer
  supported.
- `stg branch --list` now produces colorized output. The `--color`
  option or `NO_COLOR` environment variable may be used to affect this
  behavior.
- `stg branch --rename` now supports renaming regular git branches in
  addition to StGit-enabled branches.
- `stg clean` now uses `-A` and `-U` short options for `--applied` and
  `--unapplied` instead of `-a` and `-u`. This is done for consistency
  with `stg series` and `stg show`.
- `stg import` now only recognizes compressed patches by their file
  extension (`.bz2` or `.gz`) and no longer proactively attempts to
  decompress using all known decompressors.
- `stg import` support for compressed input files is selectable at
  compile time using the `import-compressed` feature.
- `stg import` support for importing from a URL is selectable at compile
  time using the `import-url` feature. **N.B.** there is a measurable
  runtime performance impact of building with `import-url` due to the
  unconditional, pre-main initialization of `curl` which affects **all**
  `stg` commands.
- `stg log` now colorizes output by default. The `--color` option or
  `NO_COLOR` environment variable may be used to affect this behavior.
- `stgit.new.verbose` changed to `stgit.edit.verbose` and now also
  affects edit behavior for `edit`, `refresh`, and `squash` along with
  `new`.
- `stg new` now accepts `-e/--edit` and `-d/--diff` instead of
  `-v/--verbose`
- `stg pick` now allows a mix of commits and patches to be picked
  whereas previously only a single commit xor multiple patches could be
  picked.
- `stg pick` now performs a single stack transaction for all the picked
  patches/commits instead of one transaction per pick.
- `stg push` now attempts to perform three-way merges, which may improve
  conflict resolution in some cases. This feature is enabled by default
  when git >= 2.32.0 is detected.
- `stg rebase --interactive` the "squash" and "fixup" instructions may
  no longer be applied to the first patch in the instruction list. The
  stated semantics of both "squash" and "fixup" is that they squash the
  labeled patch with the preceding patch, which is not possible/valid
  when there is no preceding patch.
- `stg refresh` no longer has a `--spill` flag. Use `stg spill` instead.
- `stg series` has updated colorized output.
- `stg series` now requires patch range arguments to be both in-order
  and contiguous. Constraining patch ranges in this manner ensures that
  the output from `stg series` is always a valid/correct view of a
  subset of the series.
- `stg show` diff output respects the `--color` option.
- `stg squash` now allows the full suite of patch edit options,
  including `-d/--diff`. Previously only a few message-related options
  were available.
- `stg version` now displays copyright and license statements.

### Fixed

- `stg branch --create` inherits the current branch's remote branch
  configuration, if available. The Python implementation had an apparent
  bug that prevented inheriting the remote branch configuration when
  creating from the current branch.
- Avoid case insensitive patch name collisions. On operating systems
  with case-insensitive paths, patch names that only differ by case lead
  to patch reference collisions. StGit now ensures that patch names are
  distinct under case insensitive comparisons.
- `stg pull` and `stg rebase` record updated stack state instead of
  deferring until the next stack-modifying command to do so.

### Changed since 2.0.0-rc.2

#### Changed
- chore: Update Cargo.lock

#### Fixed
- fix(zsh): Repair broken completion of --git-opt
- fix(zsh): Add missing `stg email send --branch`
- fix(email): Send using --branch option
- fix: Avoid duplicate signoff with stgit.autosign
- fix: Do not use 3way for merged checks


## [2.0.0-rc.2] 2022-10-23

### Changed
- The `--diff-opts` option is renamed to `--diff-opt`. `--diff-opts`
  remains available as an alias.
- The `--diff-opt` option no longer allows multiple git options per
  occurrence. This allows git diff options with spaces in their values.
- The `--git-opts` option for `stg email format` and `stg email send` is
  renamed `--git-opt`.
- The `--git-opt` option no longer allows multiple git options per
  occurrence. This allows git options with spaces in their values.
- Zsh completion for `--diff-opt` and `--git-opt` leverage the
  full-featured git completion capability.

### Fixed
- Repair check for modifications to stack by external tools.
- `stg pull` and `stg rebase` record updated stack state instead of
  deferring until the next stack-modifying command to do so.
- Improve patch application with `git apply --3way` when pushing` (#225)
- Zsh completion for `--diff-opt` accommodates multiple occurrences


## [2.0.0-rc.1] 2022-09-30

### Added
- Added `--annotate` flag to `stg email send`.
- Added `-p`/`--patch` option to `stg show` as alternative way to select patch
  ranges (#216).
- Added `-n`/`--name` option to `stg new` as alternative way to specify new
  patch name (#216).

### Changed
- Update `git2` to 0.15.0, which may further help compatibility with
  sparse checkouts and multiple worktrees (#195).
- Update to `clap` 4.0, which changes the help formatting and coloring.
- Update other dependencies to latest versions in Cargo.lock.
- No longer depend on `lazy_static` crate.
- Use `std::thread::scope` instead of custom mechanism. This brings the
  total number of uses of `unsafe` in StGit to zero.
- Minimum rustc requirement is set to 1.63.0.
- The '$' sigil used for committed patches is now yellow instead of
  white.
- Patch names beginning with a hyphen '-' may be disambiguated from command
  line options by escaping the leading '-' with a backslash.
- `stg email format` and `stg email send` now use `-G`/`--git-opts` to pass
  additional options to `git format-patch` and `git send-email`.
- Patch name arguments to `stg email format` and `stg email-send` can now be
  placed after a `--` separator (#216).
- Update top-level usage help for `stg`.

### Fixed
- Various errors that may occur when executing a stack transaction are
  now handled more robustly such that the changes from the transaction
  are rolled-back so that the stack, repository, and worktree are all in
  a consistent state (#205).
- The `stg uncommit -h` usage indentation is repaired.
- The `stg float` usage now shows the two distinct usage modes.
- `stg squash --name` allows patch names with leading '-'.
- `stg diff --range` allows patch names and ranges with leading '-'.
- Fix some pre-indented paragraphs in help/about strings.
- Zsh completion for `stg edit` incorrectly included -O/--diff-opts.
- Zsh completion for `stg files` incorrectly included -O/--diff-opts.


## [2.0.0-beta.3] 2022-08-28

### Added
- Add install targets for `contrib/` directory.

### Changed
- Use `git` executable instead of `libgit2` for all status and index
  operations to improve compatibility with sparse index checkouts
  (#195).
- Show commit hash in `stg version` output when not built from tag.
- Use `cargo --locked` consistently in Makefiles.
- Use "patch" extension in temp file name when editing a patch with a
  diff.
- Updated transient dependencies in Cargo.lock.

### Fixed
- Repair `stg branch --describe` panic when run without arguments
- Repair zsh completions for `git branch`
- Repair `stgit.el` to use compatible `stg show` commands (#202).
- Repair `stg uncommit --to` to work with annotated tags (#203).
- Repair `make install` to not install cargo tracking files.


## [2.0.0-beta.2] 2022-08-05

### Changed
- Improved error when push conflicts with untracked files (#193)
- Removed a few transitive dependencies by turning-off features in bstr
  and chrono.
- Update Cargo.lock with latest dependencies
- Update to clap 3.2 and only use non-deprecated interfaces

### Fixed
- Repair `stg spill` when spilling newly added files and using path
  limits.


## [2.0.0-beta.1] 2022-07-28

### Removed
- Removed Python implementation of StGit.

### Added
- Man page generation in asciidoc format with `stg completion man`. This
  was needed for feature parity with the Python implementation.
- Added documentation for patch range syntax to stg(1) man page.
- Added `install-all` target to top-level Makefile that installs the
  executable, man pages, html pages, and shell completions.

### Changed
- Additional template search paths were added. In addition to looking
  for template files in .git/, also look in
  `$XDG_CONFIG_HOME/stgit/templates/` and `$HOME/.stgit/templates`. This
  search strategy is consistent with how git looks for the global config
  file.
- Makefile targets are updated such that they are all applicable to the
  Rust implementation.
- Argument value names are now all lowercase in help and man pages.
- Updated Cargo.lock with latest versions of dependencies.
- Release checklist is updated for Rust implementation.

### Fixed
- Minor typo fixes in help strings
- Improved documentation for top-level `stg` options.
- Improve error message in edge case of attempting to push a hidden
  patch by name when there are no unapplied patches.


## [2.0.0-alpha.2] 2022-07-07

### Added
- `stg email format` wraps `git format-patch` and provides a mechanism
  to generate patch emails and optional cover letter in mbox format.
- `stg email send` wraps `git send-email` and allows sending patch
  emails, either from files generated by `stg email format` or by
  specifying patches directly.

### Changed
- Bash completions for shell aliases now fallback to filename
  completions (#191).
- Help options listings now ensure --color and --help are shown last.
- Various zsh completion improvements:
  - Add descriptions for --color values
  - Complete -O/--diff-opts values (using `git diff-tree --git-completion-helper`)
  - Comprehend `stg -C <dir>` options
  - Improved/corrected alias expansion
  - Improved error messages when completion is attempted outside git
    repo and/or StGit-initialized branch
  - Patch name completions now look and feel like output from `stg
    series`
  - Complete patch range syntax ('patch0..patchN') for all relevant
    commands
  - Completion for `stg squash` no longer allows duplicate patch name
    arguments
  - Removed completions for removed `stg mail` command
  - Completion for `stg sink` no longer offers hidden patches
  - Completion for `stg rename` comprehends second, new patch name
    argument
  - Completion for `stg diff --range` now works

### Fixed
- Compatibility with git versions prior to 2.35.0 is repaired by
  avoiding using `git apply --allow-empty` (#192).
- Fish completions for -O/--diff-opts are repaired


## [2.0.0-alpha.1] 2022-06-17

### Added
- `stg series` gains the `-i/--commit-id` option to display patches'
  commit ids.
- `stg series` colorized output is modified. The main change is that
  patch descriptions are no longer yellow.
- `stg version` now displays copyright and license statements.
- `stg version` gains `-s/--short` flag to show shortened version info.
- The `stgit.diff-opts` configuration variable is now respected as it
  was in the Python implementation.
- `stg completion` command provides runtime support for shell completions.
- `stg completion bash` generates bash shell completion script.
- `stg completion fish` generates fish shell completion script.
- `stg completion zsh` outputs zsh shell completion script.
- `stg completion list` shows StGit commands and aliases and is used at
  completion-time by shell completion scripts.

### Changed
- The `-O/--diff-opts` flag now allows both multiple space separated
  opts in one value as well as multiple occurrences of `-O/--diff-opts`
  on the same command line. This behavior is compatible with the Python
  implementation.
- `stg series` help output splits options into a few sections.
- Dependencies are updated to more recent versions in Cargo.lock.

### Fixed
- `stg edit --set-tree` no longer causes the interactive editor to be
  implicitly invoked.
- Repair build for non-Linux unix targets (including MacOS) and Windows
  targets.
- Avoid case insensitive patch name collisions. On operating systems
  with case-insensitive paths, patch names that only differ by case lead
  to patch reference collisions. StGit now ensures that patch names are
  distinct under case insensitive comparisons.
- Add missing `-t` short option for `--set-tree` for `stg edit`.
- Add missing `-k` short option for `--keep`.


## [2.0.0-alpha.0] 2022-05-17

### Removed
- `stg edit` no longer accepts `-O/--diff-opts`. Custom diff options is
  in conflict with editable diffs since many (most?) diff options cause
  the diff to no long be applicable.
- `stg files` no longer accepts `-O/--diff-opts`. This option was of
  marginal value since it only had a possible side effect when `--stat`
  was being used.
- `stg clone` is removed (at least for the time being). Use `git clone`
  and `stg init` instead.
- `stg mail` is removed, but will be re-added or replaced prior to the
  2.0.0 release.

### Added
- `stg new --refresh` allows a new patch to be refreshed with changes in
  one step. The `-i/--index`, `-F/--force`, `-s/--submodules`, and
  `--no-submodules` options from `stg refresh` are also available to
  `stg new`.
- `stg id` now accepts the `-b/--branch` option.
- `stg spill` replaces `stg refresh --spill`.

### Changed
- StGit aliases are now more like Git aliases. Normal aliases refer to
  StGit subcommands, but aliases prefixed with '!' are shell aliases
  that may run arbitrary commands. An example normal alias would be
  `git config stgit.alias.list 'series --description --empty'`. An
  example shell alias would be `git config stgit.alias.st '!git status
  --short'`.
- The `--ack` and `--review` options now optionally take a value. The
  `--ack-by` and `--review-by` options are deprecated.
- Commands such as `stg goto`, `stg push`, and `stg pop` now require
  full/correct patch names on the command line and no longer accept
  unambiguous patch name prefixes. When an inexact patch name is
  provided on the command line, the error message will now indicate
  similar valid patch names.
- `stg branch` output is now generally less verbose.
- `stg branch --describe` replaces `stg branch --description`. The
  `--description` subcommand remains supported as a hidden alias to
  `--describe`, but the description string must now be provided as its
  own argument; i.e. `--description="description string"` is no longer
  supported.
- `stg branch --list` now produces colorized output. The `--color`
  option or `NO_COLOR` environment variable may be used to affect this
  behavior.
- `stg branch --rename` now supports renaming regular git branches in
  addition to StGit-enabled branches.
- `stg clean` now uses `-A` and `-U` short options for `--applied` and
  `--unapplied` instead of `-a` and `-u`. This is done for consistency
  with `stg series` and `stg show`.
- `stg import` now only recognizes compressed patches by their file
  extension (`.bz2` or `.gz`) and no longer attempts to decompress using
  all known decompressors.
- `stg import` support for compressed input files is selectable at
   compile time using the `import-compressed` feature.
- `stg import` support for importing from a URL is selectable at compile
  time using the `import-url` feature.
- `stg log` now colorizes output by default. The `--color` option or
  `NO_COLOR` environment variable may be used to affect this behavior.
- `stgit.new.verbose` changed to `stgit.edit.verbose` and now affects edit
  behavior for `edit`, `refresh`, and `squash` along with `new`.
- `stg new` now accepts `-e/--edit` and `-d/--diff` instead of `-v/--verbose`
- `stg pick` now allows a mix of commits and patches to be picked
  whereas previously only a single commit xor multiple patches could be
  picked.
- `stg pick` now performs a single stack transaction for all the picked
  patches/commits instead of one transaction per pick.
- `stg rebase --interactive` the "squash" and "fixup" instructions may
  no longer be applied to the first patch in the instruction list. The
  stated semantics of both "squash" and "fixup" is that they squash the
  labeled patch with the preceding patch, which is not possible/valid
  when there is no preceding patch.
- `stg refresh` no longer has the `--spill` flag. Use `stg spill`
  instead.
- Updated colorized output for `stg series`.
- `stg series` now requires patch range arguments to be both in-order
  and contiguous. Constraining patch ranges in this manner ensures that
  the output from `stg series` is always a valid/correct view of a
  subset of the series.
- `stg show` diff can now be limited to certain paths by specifying path
  limits on the command line.
- `stg show` diff output respects the `--color` option.
- The new `--signoff` patch edit option supersedes the deprecated
  `--sign` and `--sign-by` options. `--signoff` without its optional
  value does the same thing as `--sign`, while `--signoff=<value>` does
  the same thing as `--sign-by=<value>`.
- `stg squash` now allows the full suite of patch edit options,
  including `-d/--diff`. Previously only a few message-related options
  were available.

### Fixed
- `stg branch --create` inherits the current branch's remote branch
  configuration, if available. The Python implementation had an apparent
  bug that prevented inheriting the remote branch configuration when
  creating from the current branch.


## [1.5] 2022-01-28

### Removed
### Added
- Add Makefile targets for installing shell completions
- `stg rebase --interactive` learns 'hide' instruction

### Changed
- Picked patch names are preserved when possible (#175)
- Replace `--unapplied` option with `--noapply` for `stg pick` (#174)
- `stg pick --noapply` no longer reverses patch order (#174)
- Use `stg version` uses `sys.executable` to get Python version.

### Fixed
- Repair `stg repair` with amended first patch (#163)
- Repair corner cases where invalid patchnames could be generated by
  `stg new`, `stg uncommit`, etc. (#176)
- `stg mail` could crash due to a misspelled reference (#178)
- Zsh completion for `stg refresh -p` now completes against all patches
  (not just applied patches).
- Zsh gains missing completion for `stg push --noapply`
- Minor repair to help for `stg float --noapply` and `stg push
  --noapply`
- Restore `stg sink --nopush` capability.


## [1.4] 2021-10-27

### Removed
- Python 3.5, which became EOL 2020-09-13, support is deprecated and
  will be removed in a future StGit release
- Python 3.6, which will be EOL 2021-12-23, support is deprecated and
  will be removed in a future StGit release

### Added
- The new `stg import --message-id` option causes the Message-ID from
  imported emails to be included as the Message-Id trailer in the patch
  description (#42)
- The new 'stgit.import.message-id' config option also enables the
  Message-Id trailer (#42)

### Changed
- `stg import` no longer creates "Message-Id" trailer by default when
  importing patches from email (#42)
- StGit works with Python 3.10
- `stg version` prints a more abbreviated Python version
- `stg commit` will no longer commit empty patches by default; the
  `--allow-empty` option may be used to override this behavior (#158)
- The `stgit.main.main()` function now takes an argv parameter and
  returns an int return code in most cases instead of calling
  sys.exit(), thus making main() a bit easier to use as an API.

### Fixed
- Repair stack upgrade with `stg branch --list` (#155)
- Repair crash in `stg squash` with out of order patches and no name
  specified (#157)
- Zsh completions learn `stg float --noapply` option
- Zsh completion for `stg sink` now allows multiple patches


## [1.3] 2021-09-26

### Removed

### Added

### Changed

### Fixed
- Repair crash regression when using `stgit.autosign`

## [1.2] 2021-09-26

### Removed

### Deprecated
- Python 3.5, which became EOL 2020-09-13, support is deprecated and
  will be removed in a future StGit release
- Python 3.6, which will be EOL 2021-12-23, support is deprecated and
  will be removed in a future StGit release

### Added
- `stg rebase ` learns `--interactive`; easily re-order, edit, squash,
  fixup, or delete patches via your editor
- `stg rebase` learns `--autostash`; stash changes before the rebase and
  apply them after. Also configurable with the `stgit.autostash`
  configuration option
- `stg edit` can now rename patches (#119)
- `stg edit` gains helpful instructions (#138)
- `stg new` learns `--verbose`, which includes a diff in the editor
  window (similar to `git commit --verbose`). This behavior is also
  configurable with the `stgit.new.verbose` configuration option
- `stg push` and `stg float` learn `--noapply` option; allows patches
  to be reordered without updating worktree and deferring merge conflict
  resolution (#144)
- `stg edit`, `stg refresh`, and `stg new` learn the `--sign-by`,
  `--ack-by`, and `--review-by` options which allow those respective
  trailers' values to be specified by the user on the command line (#92)

### Changed
- Stack metadata version 5; stack metadata is moved from
  `refs/heads/<branch>.stgit` to `refs/stacks/<branch>` and the stack
  metadata file now uses a JSON format instead of the prior custom
  format; the stack metadata will be upgraded to v5 on first use of
  this version of StGit; like all stack metadata upgrades, **this is a
  one-way auto-upgrade for existing stacks** (#65)
- Use setuptools instead of distutils for packaging
- No git or python version checks in setup.py
- Use different dynamic versioning system
- Install `stg` executable as console_script entry point
- More sophisticated search for bash.exe on Windows when running hooks
- The editor window text for `stg squash` has been modified to mirror
  git's behavior -- the squash edit message now includes all commits
  (#71)
- Binary diffs are no longer shown when with `stg edit -d`
- Multiple trailers can now be added at once; this is now allowed, for
  example: `stg edit --sign --review --ack`
- Update zsh completion for `stg rebase` to show local and remote heads
  (#102)
- Zsh completions for commands with patch arguments now comprehend the
  effect of `-b/--branch` and `-B/--ref-branch`
- Zsh completions now guard patch names--one less TAB press to complete
  patch names in certain contexts
- `stg import` now extracts the `Message-ID` email header into the patch
  message (#42)

### Fixed
- Repair crash when attempting to export empty patch (#112)
- Exact command name matches are unambiguous (#110)
- Exiting with an empty `stg edit` editor will now abort the edit;
  previously it would delete your commit message. (#138)
- Repair completions when stg.series.description is enabled in config
- Workaround child process reaping race on Windows (#78)
- Repair crash with `stg float --series` when bad patch name in series
- Repair zsh completion for `stg float` to accept multiple patch names
- Repair zsh completion for changed files, affecting `stg refresh` and
  `stg diff`

### Internal
- Add link to coverage.io project to CONTRIBUTING.md
- Set smart `exclude_lines` default for 'coverage'
- Expanded test suite for `stg edit`
- Add pkgtest.py script to help test StGit packaging
- Cleanup .gitignore files


## [1.1] 2021-04-30

### Removed

### Added
- StGit GPG-signs patches when `commit.gpgsign` is set (#12)
- Support `core.hooksPath` in git config
- Add `-C` option for `stg import` and `stg fold` (#18)

### Changed
- Allow importing mail and series from urls (#94)
- `stg refresh --edit` may also use `--diff` and `--diff-opts` (#98)
- `stg goto` allows sha1 of a patch instead of patch name (#93)

### Fixed
- Repair hang in `stg pull -m`, `stg goto -m`, and `stg push -m`
- Repair `stg mail` to show diffstat of whole series (#104)
- Repair MANIFEST.in to include AUTHORS.md and README.md files


## [1.0] 2021-02-07

### Removed
- Drop support for Python < 3.5
- Remove previously deprecated `stg publish` command
- Removed contrib scripts: `stg-swallow`, `stg-fold-files-from`,
  `stg-dispatch`, `stg-whatchanged`, and `stg-show-old`

### Added
- The pre-commit hook is now run for `stg refresh`
- New `--spill` option for `stg refresh`
- Add stgit.series.description config option (#88)
- Official support for Python versions up to 3.9

### Changed
- Stack metadata format 4. All metadata now kept in Git objects; no more
  stack state files in .git/patches. **A one-way auto-upgrade to format
  version 4 will occur when StGit commands are run on an existing StGit
  branch.**
- Use `python3` in shebangs instead of `python`
- `contrib/stgbashprompt.sh` is no longer executable
- Internal docstrings now use reStructuredText instead of Epytext

### Fixed
- Importing large patches is much, much faster (#66)
- Other performance improvements when dealing with large patches
- Repair diffstat when outside work tree root (#62)
- Use encoded (string) environment variables on Windows (#79)
- Fix `stg pull` when no upstream is configured (#83)
- Fix `refresh` crash with path limiting and files added to index (#85)
- Repair `new` with patchdescr.template crash (#87)
- Repair `log` from worktree subdir with patches specified
- Repair `import` allowing/generating duplicate patch names (#64)
- Repair `mail --auto` to strip comments after addrs (#91)


## [0.23] 2020-06-12

### Removed
- Drop support for Python 3.3; Python 2 (2.6 and 2.7) remain
  deprecated, but supported for one last release
- Tutorial is removed; it now exists as part of the website

### Deprecated
- Python 2.x support is deprecated and will be removed in a future
  release

### Added
- Support html5 output of docs from asciidoc
- Add `--expose` option for `stg pick` to allow picked commit message to
  be customized

### Changed
- Limit mail diffstat to 72 columns
- Added pyproject.toml file for black configuration
- Minimum Git version is 2.2.0
- Quote stg and subcommand in man page synopsis
- Replaced RELEASENOTES with this CHANGELOG.md
- Replaces Documentation/SubmittingPatches with CONTRIBUTING.md

### Fixed
- Repair MANIFEST.in and generated source dist
- Repair importing mail with ": " (colon space) in subject
- Fix mail cover letter shortlog
- Fix mail cover letter diffstat
- `stg series` now only outputs colors when `isatty()`
- Repair mail SSL check (#57)
- Repair `stg mail` with both `-a` and `-e` options (#58)
- Remove empty short-opt for `--no-submodules` of `stg refresh`
- Repair build.py for Python 2 with explicit `flush()`
- `stgit.refreshsubmodules` added to sample gitconfig

### Internal
- Update docs build system from upstream Git docs
- Use coverage contexts to map commands to covered lines
- Improve mail tests
- Use GitHub Actions instead of TravisCI
- Format StGit source using black formatter

## [0.22] - 2020-03-02

### Removed
- Remove debian packaging; downstream Debian uses its own anyway

### Deprecated
- Python 2.x support is deprecated and will be removed in the next StGit
  release
- `stg publish` is deprecated and will be removed in the next StGit
  release

### Added
- `stg import` has new --keep-cr option, like `git mailsplit`

### Changed
- `stg new` now includes patch name in log message
- `stg branch --rename` can now rename the current branch
- `stg branch --create` now works even if the workspace is dirty,
  consistent with `git checkout`
- `stg branch --description` now works on both regular and stgit
  branches
- `stg edit --diff` now implies `--edit`
- `stg refresh` and `stg edit` now reset the committer information,
  consistent with `stg push`
- git notes are now preserved when patches are modified
- Tutorial improvements
- Many additional tests and test improvements
- All stgit commands now use "new" git library infrastructure

### Fixed
- `stg branch --create` inherits remote correctly from parent committish
- Patch names are checked earlier to avoid inconsistent stack states
- Improved commit data parsing and handling of non-UTF8 encodings
- Repair git error messages when checking stgit version from outside a
  git repo


## [0.21] - 2019-10-28

### Changed
- Faster handling of large patches (#44)

### Fixed
- Build reproducibility repairs (Thanks reproducible-builds.org team!)
- Python can now be run with optimizations (`python -O`)
- `stg log` now prints trailing newline
- Improved command line option parsing for `stg log`


## [0.20] - 2019-10-04

### Added
- `stg patches -d` can now output colored diffs.
- `stg publish --overwrite` allows branch to be overwritten instead of
  creating new commits.
- `stg log --clear` deletes the stack's log history. Use with caution.
- Fish shell completions for stg.
- Zsh completions for stg.
- `stg mail --domain` option overrides the host's domain in the message
  ID.

### Changed
- Branch protection metadata now captured in config instead of
  .git/patches/<branch>protect file. This updates stgit's metadata
  format from v2 to v3.
- `stg diff` no longer shows binary diffs by default. Use `-O--binary`
  or add `--binary` to stgit.diff-opts in config.
- Diagnostic output is now routed to stderr instead of stdout.
  Diagnostic output is also now sent to stderr unconditionally, i.e. no
  more isatty() test (#35).
- Converted to "new" lib infrastructure: `show`, `patches`, `diff`,
  `pick`, `pull`, `rebase`, and `fold`.

### Fixed
- `stg show` detects conflicting --applied and --unapplied options.
- `stg show --stat` now shows commit headers.
- `stg patches --diff` now shows proper diff instead of `b'...'` repr of
  diff.
- `stg diff --range` detects some invalid values (e.g. `-r ..`).
- Date parsing is now more portable, only use platform specific `date`
  as last parsing option. Affects, e.g., `stg refresh --authdate`.
- Repaired search path for templates to avoid looking in Python
  site-packages directory.
- Ensure stdout and stderr are flushed. Rarely affected `stg diff`.
- `stg repair` will now fail if extra command line arguments are
  provided.
- Bash completions are now generated in a reproducible manner.
- `stg edit --diff` on an empty patch no longer crashes.
- `stg pick` no longer fails when picked commit has empty message (#39).
- `stg rebase` no longer crashes when there are conflicts (#34).
- `stg pick` no longer crashes if --name is not provided when picking a
  regular commit object.
- Improved test coverage for: branch, diff, pick, sync,
- New tests for: files, patches, fold, series
- Portable use of iconv, sort, and sed in tests.
- Linting using flake8 and isort.
- All Python code now conforms to PEP-8.
- Updated test infrastructure from git 2.20.
- Parallel tests with coverage (`make -j4 coverage`) now works.
- Documentation build is not included in code coverage.
- Repaired log end messages when using `STGIT_SUBPROCESS_LOG=debug`.
- Renamed "dunder" instance attributes to improve debugging.
- Fail faster when patch name has slash ('/') (#24).


## [0.19] 2018-11-05

### Changed
- Python 3 support. StGit supports Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6,
  and 3.7. PyPy interpreters are also supported.
- Submodules are now ignored when checking if working tree is clean.
  Submodules are also not included by default when refreshing a patch.
- Config booleans are now parsed similarly to git-config.
- `contrib/stgit.el` is now licenced with GPLv2.
- Add continuous integration (travis-ci) and code coverage (coveralls)
  support.
- Many new test cases were added.

### Fixed
- Repair handling of emails with utf-8 bodies containing latin-1
  characters. Also correctly decode email headers containing quoted
  encoded words.
- StGit's version is now correct/available in the release archive.


## [0.18] 2017-08-14

### Added
- `commit-msg` hook support for easier integration with Gerrit, allowing
  a Change-Id line to be inserted in the commit message
- `stg mail` improvements for 'Suggested-by:' tag and auto generation of
  Cc for the cover letter based on all tags in the series
- `stg mail` bash completion for the --to, --cc and --bcc options based
  on the content of the [mail "alias"] section of Git configuration
- `stg edit --review` option to add a 'Reviewed-by:' tag
- `stg pop --spill` functionality to allow popping a patch from the
  stack while keeping its modification in the tree

### Changed
- Project page details updated (gna.org has been shut down)

### Fixed
- Various fixes and test coverage improvements
netbsd-srcmastr pushed a commit that referenced this issue Jul 19, 2024
3.1.1 (2024-07-12)

Merged Pull Requests

* Replace FILE with dir and other minor chefstyle fixes #61 (tas50)
* Add Ruby 3.0 testing #62 (tas50)
* Upgrade to GitHub-native Dependabot #63 (dependabot-preview[bot])
* Remove Ruby 2.4 support and Test Ruby 3.0/3.1 #66 (poorndm)
* Bump minimum to 2.7 #75 (tpowell-progress)
* Support ruby3.3 Logger by properly initialize super class #74 (mtasaka)
* ffi less than 1.17.0 because of ruby 3.0 #77 (tpowell-progress)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants