[med-svn] [Git][med-team/praat][master] 4 commits: New upstream version 6.4.03+dfsg

Rafael Laboissière (@rafael) gitlab at salsa.debian.org
Sat Jan 6 09:01:05 GMT 2024



Rafael Laboissière pushed to branch master at Debian Med / praat


Commits:
0b71b932 by Rafael Laboissière at 2024-01-05T15:30:07-03:00
New upstream version 6.4.03+dfsg
- - - - -
b2483823 by Rafael Laboissière at 2024-01-05T15:32:12-03:00
Update upstream source from tag 'upstream/6.4.03+dfsg'

Update to upstream version '6.4.03+dfsg'
with Debian dir 2176c324485b10d521790ea7e02368d2c3cdbe47
- - - - -
8d899f5e by Rafael Laboissière at 2024-01-05T15:44:33-03:00
d/p/fix-action-titles.patch: Drop patch (applied upstream)

- - - - -
8419420b by Rafael Laboissière at 2024-01-05T15:45:03-03:00
d/changelog: Add entry for release 6.4.03+dfsg-1

Gbp-Dch: Ignore

- - - - -


17 changed files:

- README.md
- debian/changelog
- − debian/patches/fix-action-titles.patch
- debian/patches/series
- dwtest/test_Sound_voiceActivity.praat
- dwtools/praat_David_init.cpp
- fon/manual_scripting.cpp
- fon/manual_whatsnew.cpp
- + makefiles/makefile.defs.msys-arm64
- melder/NUM.h
- melder/melder_kar.h
- sys/Interpreter.cpp
- sys/oo_WRITE_BINARY.h
- sys/praat.cpp
- sys/praat_statistics.cpp
- sys/praat_version.h
- test/num/fisherQ.praat


Changes:

=====================================
README.md
=====================================
@@ -41,17 +41,20 @@ For more information, consult the website [praat.org](https://praat.org), which
 
 ## 1. Binary executables
 
-While the [Praat website](https://praat.org) contains the latest executable for all platforms that we support
+While the [Praat website](https://www.fon.hum.uva.nl/praat) contains the latest executable for all platforms that we support
 (or used to support), the [releases on GitHub](https://github.com/praat/praat/releases) contain many older executables as well.
 
 The meaning of the names of binary files available on GitHub is as follows (editions that currently receive updates are in bold):
 
 ### 1.1. Windows binaries
-- **`praatXXXX_win64.zip`: zipped executable for 64-bit Windows (** XP and higher, or **7 and higher)**
-- **`praatXXXX_win32.zip`: zipped executable for 32-bit Windows (** XP and higher, or **7 and higher)**
-- `praatconXXXX_win64.zip`: zipped executable for 64-bit Windows, console edition
-- `praatconXXXX_win32.zip`: zipped executable for 32-bit Windows, console edition
-- `praatconXXXX_win32sit.exe`: self-extracting StuffIt archive with executable for 32-bit Windows, console edition
+- **`praatXXXX_win-arm64.zip`: zipped executable for ARM64 Windows (11 and higher)**
+- **`praatXXXX_win-intel64.zip`: zipped executable for Intel64 Windows (7 and higher)**
+- **`praatXXXX_win-intel32.zip`: zipped executable for Intel32 Windows (7 and higher)**
+- `praatXXXX_win64.zip`: zipped executable for 64-bit Intel Windows (XP and higher, or 7 and higher)
+- `praatXXXX_win32.zip`: zipped executable for 32-bit Intel Windows (XP and higher, or 7 and higher)
+- `praatconXXXX_win64.zip`: zipped executable for 64-bit Intel Windows, console edition
+- `praatconXXXX_win32.zip`: zipped executable for 32-bit Intel Windows, console edition
+- `praatconXXXX_win32sit.exe`: self-extracting StuffIt archive with executable for 32-bit Intel Windows, console edition
 - `praatXXXX_win98.zip`: zipped executable for Windows 98
 - `praatXXXX_win98sit.exe`: self-extracting StuffIt archive with executable for Windows 98
 
@@ -71,14 +74,23 @@ The meaning of the names of binary files available on GitHub is as follows (edit
 - `praatXXXX_mac7.sit`: StuffIt archive with executable for MacOS 7
 
 ### 1.3. Unix binaries
-- **`praatXXXX_rpi_armv7.tar.gz`: gzipped tarred executable for 32-bit Linux on the Raspberry Pi 4B (GTK** 2 or **3)**
-- **`praatXXXX_chrome64.tar.gz`: gzipped tarred executable for 64-bit Linux on Chromebooks (GTK** 2 or **3)**
-- **`praatXXXX_linux64barren.tar.gz`: gzipped tarred executable for 64-bit Linux, without GUI, sound and graphics**
-- **`praatXXXX_linux64nogui.tar.gz`: gzipped tarred executable for 64-bit Linux, without GUI and sound but with graphics (Cairo and Pango)**
-- **`praatXXXX_linux64.tar.gz`: gzipped tarred executable for 64-bit Linux (GTK** 2 or **3)**
-- `praatXXXX_linux32.tar.gz`: gzipped tarred executable for 32-bit Linux (GTK 2)
-- `praatXXXX_linux_motif64.tar.gz`: gzipped tarred executable for 64-bit Linux (Motif)
-- `praatXXXX_linux_motif32.tar.gz`: gzipped tarred executable for 32-bit Linux (Motif)
+- **`praatXXXX_chrome-arm64.tar.gz`: gzipped tarred executable for Linux on ARM64 Chromebooks (GTK 3)**
+- **`praatXXXX_linux-arm64-barren.tar.gz`: gzipped tarred executable for ARM64 Linux, without GUI, sound and graphics**
+- **`praatXXXX_linux-arm64-nogui.tar.gz`: gzipped tarred executable for ARM64 Linux, without GUI and sound but with graphics (Cairo and Pango)**
+- **`praatXXXX_linux-arm64.tar.gz`: gzipped tarred executable for ARM64 Linux (GTK 3)**
+- **`praatXXXX_rpi-armv7.tar.gz`: gzipped tarred executable for (32-bit) ARMv7 Linux on the Raspberry Pi 4B (GTK 3)**
+- **`praatXXXX_chrome-intel64.tar.gz`: gzipped tarred executable for Intel64 Linux on Intel64 Chromebooks (GTK 3)**
+- **`praatXXXX_linux-intel64-barren.tar.gz`: gzipped tarred executable for Intel64 Linux, without GUI, sound and graphics**
+- **`praatXXXX_linux-intel64-nogui.tar.gz`: gzipped tarred executable for Intel64 Linux, without GUI and sound but with graphics (Cairo and Pango)**
+- **`praatXXXX_linux-intel64.tar.gz`: gzipped tarred executable for Intel64 Linux (GTK 3)**
+- `praatXXXX_rpi_armv7.tar.gz`: gzipped tarred executable for (32-bit) ARMv7 Linux on the Raspberry Pi 4B (GTK 2 or 3)
+- `praatXXXX_chrome64.tar.gz`: gzipped tarred executable for 64-bit Linux on Intel64 Chromebooks (GTK 2 or 3)
+- `praatXXXX_linux64barren.tar.gz`: gzipped tarred executable for 64-bit Intel Linux, without GUI, sound and graphics
+- `praatXXXX_linux64nogui.tar.gz`: gzipped tarred executable for 64-bit Intel Linux, without GUI and sound but with graphics (Cairo and Pango)
+- `praatXXXX_linux64.tar.gz`: gzipped tarred executable for 64-bit Intel Linux (GTK 2 or 3)
+- `praatXXXX_linux32.tar.gz`: gzipped tarred executable for 32-bit Intel Linux (GTK 2)
+- `praatXXXX_linux_motif64.tar.gz`: gzipped tarred executable for 64-bit Intel Linux (Motif)
+- `praatXXXX_linux_motif32.tar.gz`: gzipped tarred executable for 32-bit Intel Linux (Motif)
 - `praatXXXX_solaris.tar.gz`: gzipped tarred executable for Solaris
 
 ## 2. Compiling the source code
@@ -120,19 +132,19 @@ The code requires that your compiler supports C99 and C++17.
 
 ### 3.1. Compiling for Windows
 
-To compile Praat's Windows edition on a 64-bit Windows computer,
+To compile Praat’s Windows edition on an Intel 64-bit Windows computer,
 install Cygwin on that computer,
 and under Cygwin install the Devel packages mingw64-x86_64-gcc-g++ (for 64-bit targets)
 and/or mingw64-i686-gcc-g++ (for 32-bit targets).
 Move the Praat sources directory somewhere in your `/home/yourname` tree,
 e.g. as `/home/yourname/praats` and/or `/home/yourname/praats32`;
 the folders `fon` and `sys` should be visible within these folders.
-If you want to build Praat's 64-bit edition, type
+If you want to build Praat's Intel 64-bit edition, type
 
     cd ~/praats
     cp makefiles/makefile.defs.mingw64 ./makefile.defs
 
-or if you want to build Praat's 32-bit edition, type
+or if you want to build Praat's Intel 32-bit edition, type
 
     cd ~/praats32
     cp makefiles/makefile.defs.mingw32 ./makefile.defs
@@ -140,13 +152,33 @@ or if you want to build Praat's 32-bit edition, type
 Then type `make` to build `Praat.exe`
 (use `make -j12` to speed this up, i.e. to use 12 processors in parallel).
 
+To compile Praat’s Windows edition on an ARM64 computer, install MSYS2 on that computer
+and run `clangarm64.exe` to get a shell. In that shell, run `pacman -Suy` to update and
+`pacman -S mingw-w64-clang-aarch64-clang` to install the build tools package.
+Move the Praat sources directory somewhere in your `/home/yourname` tree,
+e.g. as `/home/yourname/praats`;
+the folders `fon` and `sys` should be visible within these folders.
+If you want to build Praat's ARM64 edition, type
+
+    cd ~/praats
+    cp makefiles/makefile.defs.msys-arm64 ./makefile.defs
+
+Testing on multiple platform versions can be done with virtual machines
+for Windows 7 (32-bit), Windows 8.1 (32-bit), 64-bit Windows 10 (1507, 1803, 22H2) and Windows 11,
+for instance on an Intel64 Mac with Parallels Desktop.
+On an ARM64 Mac with Parallels Desktop, you can test only on Windows 11.
+
 ### 3.2. Compiling for Macintosh
 
 Extract the *praatXXXX_xcodeproj.zip* file from the [latest release](https://github.com/praat/praat/releases)
-into the directory that contains `sys`, `fon`, `dwtools` and so on.
-Then open the project `praat.xcodeproj` in Xcode 15.1 (or perhaps later, but not in Xcode 15.0)
-and choose Build or Run for the target `praat_mac`.
-You can compile with the 14.2 SDK, which will work as far back as macOS 10.11,
+into the directory that contains `sys`, `fon`, `dwtools` and so on (e.g. `~/Dropbox/Praats/src`).
+Then open the project `praat.xcodeproj` in Xcode 15.1 (or perhaps later, but not in Xcode 15.0),
+and edit the Intermediate and Product build paths to something that suits you
+(Xcode -> Settings... -> Locations -> Derived Data -> Advanced... -> Custom -> Absolute,
+then type something after Products, e.g. `~/Dropbox/Praats/bin/macos`,
+as well as something after Intermediates, e.g. `~/builds/mac_intermediates`, then click Done).
+After this preliminary work, choose Build or Run for the target `praat_mac`.
+You can compile with the 14.2 SDK, which will work as far back as macOS 10.11 El Capitan,
 which is our deployment target, and will look good even on macOS 14 Sonoma.
 
 If you get an error message like “Code Signing Identity xxx does not match any valid, non-expired,
@@ -166,9 +198,9 @@ you will probably have to not only *sign* the executable, but also *notarize* it
 do Xcode (version 15) -> Product -> Archive -> Distribute App -> Developer ID -> Upload ->
 Automatically manage signing -> Upload -> ...wait... (“Package Approved”) ...wait...
 (“Ready to distribute”) -> Export Notarized App). If your Praat.app was built into
-`~/builds/mac_products/Configuration64`, then you can save the notarized
-`Praat.app` in `~/builds/mac_products`, then drag it in the Finder to
-`~/builds/mac_products/Configuration64`, overwriting the non-notarized
+`~/Dropbox/Praats/bin/macos/Configuration64`, then you can save the notarized
+`Praat.app` in `~/Dropbox/Praats/bin/macos`, then drag it in the Finder to
+`~/Dropbox/Praats/bin/macos/Configuration64`, overwriting the non-notarized
 Praat.app that was already there. If on the way you receive an error
 “App Store Connect Operation Error -- You must first sign the relevant contracts online”,
 or “Couldn’t communicate with a helper application“,
@@ -177,14 +209,23 @@ you will have to log in to `developer.apple.com` and do Review Agreement -> Agre
 you may then also have to go (or log in) to App Store Connect, then Agreements, Tax, and Banking
 -> Paid Apps -> View or Terms (even if you have no paid apps).
 
+Testing on multiple Intel64 platform versions can be done on older Intel64 Macs,
+using virtual machines with Parallels Desktop. For instance, a 2013 Macbook Pro can handle
+OS X 10.11 El Capitan, 10.12 Sierra, 10.13 High Sierra, macOS 10.14 Mojave, 10.15 Catalina,
+and macOS 11 Big Sur, while a 2018 Macbook Pro can handle macOS 10.14 Mojave, 10.15 Catalina,
+macOS 11 Big Sur, macOS 12 Monterey, and macOS 13 Ventura (and macOS 14 Sonoma natively).
+Testing on multiple ARM64 platform versions can be done on an older ARM64 Mac,
+using virtual machines with Parallels Desktop. For instance, a 2020 Mac Mini could handle
+macOS 11 Big Sur, macOS 12 Monterey, and macOS 13 Ventura (and macOS 14 Sonoma natively).
+
 ### 3.3. Compiling on Linux and other Unixes
 
 To set up the required system libraries, install some graphics and sound packages:
 
-    sudo apt-get install libgtk-3-dev
-    sudo apt-get install libasound2-dev
-    sudo apt-get install libpulse-dev
-    sudo apt-get install libjack-dev
+    sudo apt install libgtk-3-dev
+    sudo apt install libasound2-dev
+    sudo apt install libpulse-dev
+    sudo apt install libjack-dev
 
 To set up your source tree for Linux, go to Praat's sources directory (where the folders `fon` and `sys` are)
 and type one of the four following commands:
@@ -229,54 +270,69 @@ which creates the executable `praat_nogui`. If you don't need graphics (e.g. PNG
 which creates the executable `praat_barren`. Then type `make` or `make -j12` to build the program.
 If your Unix isn’t Linux, you may have to edit the library names in the makefile.
 
+The above works exactly the same for Intel64 and ARM64 processors, with the same makefiles.
+
+Testing on multiple platform versions can be done with virtual machines
+for e.g. Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, Fedora 35, Fedora 37, Mint 20.2,
+Debian GNU Linux 10.10, CentOS 8.4, and CentOS Stream 9, 
+for instance on an Intel64 with Parallels Desktop.
+On an ARM64 Mac, we test with virtual machines for Ubuntu 22.04, Fedora 38,
+and Debian GNU Linux 12 ARM64.
+
 ## 4. Compiling the source code on all platforms simultaneously
 
-The easiest way to develop your Praat clone on all platforms simultaneously,
-is to edit the source code on a Mac (with Xcode)
-and use Parallels Desktop for Windows and Linux building and testing.
-This is how Praat is currently developed.
-Editing takes place in Xcode,
-after which building Praat involves no more than typing Command-B into Xcode
+An easy way to develop your Praat clone on all platforms simultaneously, is to share
+the Praat source folders via a cloud service (in the examples here, that is Dropbox).
+Praat is currently developed by editing the source code on an M3 Mac (with Xcode)
+and using virtual Windows and Linux computers (via Parallels Desktop on an Intel64 Mac)
+for building and testing, but you can of course use separate computers as well.
+In this set-up, building Praat involves no more than typing Command-B into Xcode
 (or Command-R to build and run)
 or `praat-build` into a Windows or Linux terminal (or `praat-run` to build and run).
 
 ### 4.1. MacOS development set-up
 
-Your source code folders, such as `fon` and `sys`, will reside in a folder like `/Users/yourname/Praats/src`,
+Your source code folders, such as `fon` and `sys`,
+will reside in a folder like `~/Dropbox/Praats/src`,
 where you also put `praat.xcodeproj`, as described above in 3.2.
-On Paul’s 2018 MacBook Pro with Xcode 15, building Praat with Command-B or Command-R,
-after cleaning the build folder with Shift-Command-K,
-takes 367 seconds for the x86_64 part and ARM64 part together (optimization level O3).
+On a 2018 MacBook Pro (Intel64, maximum configuration) with Xcode 15.1,
+building Praat with Command-B or Command-R, after cleaning the build folder with Shift-Command-K,
+takes 367 seconds for the x86_64 part and ARM64 part together (optimization level O3);
+on a 2023 MacBook Pro (M3, maximum configuration) this takes only 56 seconds.
 
 ### 4.2. Windows development set-up
 
-Under Parallels Desktop 18 or later, install Windows 10 or Windows 11. In Windows, install Cygwin,
+On a Windows 10 or Windows 11 computer, install Cygwin (for Intel64) or MSYS (for ARM64),
 and create a `praats` folder, as described above in 3.1.
 
-There are two options for your source tree: either it resides on the MacOS disk
+If you work under Parallels Desktop (19 or later) on an Intel64 or ARM64 Mac,
+there are two options for your source tree: either it resides on the MacOS disk
 (which you will mount from Windows anyway), or it resides on the Windows disk.
 Compiling Praat for Windows on the MacOS disk takes 13 minutes (optimization level O3),
-whereas compiling Praat on the Windows disk takes only 4 minutes and 20 seconds.
-So we go with installing the source tree under the Cygwin home folder, as follows.
+whereas compiling Praat on the Windows disk takes only 4 minutes and 20 seconds
+(measured on a 2018 Intel Mac).
+So we go with installing the source tree under the Cygwin or MSYS home folder, as follows.
 
 You need to get the source from the MacOS disk, so you have to mount the MacOS disk
-from Cygwin. This is easy: in Parallels Desktop, choose `Windows 10 or 11` -> `Configure`,
+from Cygwin or MSYS. This is easy: in Parallels Desktop, choose `Windows 10 or 11` -> `Configure`,
 then `Options`, then `Sharing`, then `Share Mac`, and set `Share folders` to `Home folder only`
 (if this scares you, then use `Custom Folders` instead).
 Your MacOS home folder (i.e. `/Users/yourname`) is now visible anywhere on Windows
-as the `Z` drive (or so), and from the `Cygwin64 Terminal` you can access it as `/cygdrive/z`.
+as the `Z` drive (or so); from the `Cygwin64 Terminal` you can access it as `/cygdrive/z`;
+and from the `MSYS2 CLANGARM64 Shell` you can access it as `/z`.
 
 When developing Praat for Windows, you just edit your files in Xcode;
 do not forget to save them (as you do e.g. by building in Xcode).
 Then, just as you use Command-B and Command-R in Xcode,
 you will be able to type `praat-build` (which only builds) or `praat-run` (which builds and runs)
-into your `Cygwin64 Terminal`. To accomplish this,
-add the following definitions into `/home/yourname/.profile` in your Cygwin home folder,
-so that the `bash` shell will automatically execute them whenever you start your `Cygwin64 Terminal`
-(you will need to have installed `rsync` and `make`):
+into your `Cygwin64 Terminal` or `MSYS2 CLANGARM64 Shell`. To accomplish this,
+add the following definitions into `/home/yourname/.profile` or `/home/yourname/.bashrc`
+in your Cygwin or MSYS home folder,
+so that the `bash` shell will automatically execute them whenever you start your
+Cygwin terminalor MSYS shell (you will need to have installed `rsync` and `make`):
 
     # in Cygwin:~/.profile
-    PRAAT_SOURCES="/cygdrive/z/Praats/src"
+    PRAAT_SOURCES="/cygdrive/z/Dropbox/Praats/src"
     PRAAT_EXCLUDES='--exclude="*.xcodeproj" --exclude="Icon*" --exclude=".*" --exclude="*kanweg*"'
     alias praat-build="( cd ~/praats &&\
         rsync -rptvz $PRAAT_SOURCES/ $PRAAT_EXCLUDES . &&\
@@ -285,13 +341,23 @@ so that the `bash` shell will automatically execute them whenever you start your
     alias praat="~/praats/Praat.exe"
     alias praat-run="praat-build && praat"
 
+    # in MSYS2:~/.bashrc
+    PRAAT_SOURCES="/z/Dropbox/Praats/src"
+    PRAAT_EXCLUDES='--exclude="*.xcodeproj" --exclude="Icon*" --exclude=".*" --exclude="*kanweg*"'
+    alias praat-build="( cd ~/praats &&\
+        rsync -rptvz $PRAAT_SOURCES/ $PRAAT_EXCLUDES . &&\
+        cp makefiles/makefile.defs.msys-arm64 makefile.defs &&\
+        make -j12 )"
+    alias praat="~/praats/Praat.exe"
+    alias praat-run="praat-build && praat"
+
 This also defines `praat` for running Praat without first rebuilding it.
 The cycle from editing Praat on the Mac to running the new version on Windows therefore takes only two steps:
 
 1. edit and save the source code in Xcode on your Mac;
 2. type `praat-run` on your Windows 10 or 11 (under Parallels Desktop on your Mac).
 
-If you also want to develop the 32-bit edition, you add to `.profile`:
+If you also want to develop the Intel 32-bit edition, you add to `.profile`:
 
     # in Cygwin:~/.profile
     alias praat32-build="( cd ~/praats32 &&\
@@ -303,10 +369,11 @@ If you also want to develop the 32-bit edition, you add to `.profile`:
 
 ### 4.3. Linux development set-up
 
-Under Parallels Desktop 18 or later, install Ubuntu 20.04 or 22.04, and create
-a folder `praats` in your home folder, as described above in 3.3.
+On an Ubuntu 20.04 or 22.04 computer, create a folder `praats` in your home folder,
+as described above in 3.3.
 
-In Parallels Desktop, choose `Ubuntu 20.04 or 22.04` -> `Configure`,
+If you work under Parallels Desktop (19 or later) on an Intel64 Mac,
+choose `Ubuntu 20.04 or 22.04` -> `Configure`,
 then `Options`, then `Sharing`, then `Share Mac`, and set `Share folders` to `Home folder only`
 (or use `Custom Folders` instead).
 Your MacOS home folder (i.e. `/Users/yourname`) is now visible on the Ubuntu desktop
@@ -329,7 +396,7 @@ assuming that it uses the `bash` shell):
     alias praat="~/praats/praat"
     alias praat-run="praat-build && praat"
 
-Building Praat this way takes 7 minutes and 50 seconds (optimization level O3).
+Building Praat this way takes 7 minutes and 50 seconds (optimization level O3) on an 2018 Intel64.
 
 To build `praat_barren`, create a folder `praatsb`, and define
 
@@ -377,15 +444,15 @@ or you transfer it to a Chromebook for the real test.
 
 ### 4.4. Chromebook development set-up
 
-Parallels Desktop 18 has no emulator for Chrome, so the choice is between
+Parallels Desktop 19 has no emulator for Chrome, so the choice is between
 building Praat on a Chromebook directly or building Praat on Ubuntu 20.04 or 22.04.
 On a 2019 HP Chromebook with Intel processor, building Praat takes
 a forbidding 27 minutes.
 
-So we choose to build Praat on Ubuntu (under Parallels Desktop on the Mac),
-because building the Intel Chrome64 edition on Ubuntu 18.04 takes only
+So we choose to build Praat on Ubuntu (under Parallels Desktop on an Intel64 Mac),
+because building the Intel Chrome64 edition on Ubuntu 20.04 takes only
 2 minutes and 10 seconds. If you have the Linux set-up described in 4.3,
-you can do this with the `bc` command.
+you can do this with the `praatc-build` command.
 
 Next, you need a way to get the executable `praat` from Mac/Ubuntu to your Chromebook.
 The distributors of Praat do this via an intermediary university computer;
@@ -496,15 +563,15 @@ for all platforms for Praat version 9.9.99, although your version number will be
 The packages will be collected in the directory `~/Praats/www` on the Mac.
 
 If you follow the location mentioned in the `.xcodeproj` file, the Mac binary will reside
-in a place like `~/builds/mac_products/Configuration64`.
+in a place like `~/Dropbox/Praats/bin/Configuration64`.
 
 After notarizing the Mac binary (see above under 3.2),
 you include the executable in a `.dmg` disk image, with the following commands:
 
     # on Mac command line
-    PRAAT_WWW=~/Praats/www
+    PRAAT_WWW="~/Dropbox/Praats/www"
     PRAAT_VERSION=9999
-    cd ~/builds/mac_products/Configuration64
+    cd ~/Dropbox/Praats/bin/macos/Configuration64
     hdiutil create -fs HFS+ -ov -srcfolder Praat.app -volname Praat_${PRAAT_VERSION} praat_${PRAAT_VERSION}.dmg
     hdiutil convert -ov -format UDZO -o ${PRAAT_WWW}/praat${PRAAT_VERSION}_mac.dmg praat_${PRAAT_VERSION}.dmg
     rm praat_${PRAAT_VERSION}.dmg
@@ -512,18 +579,22 @@ you include the executable in a `.dmg` disk image, with the following commands:
 You also need to distribute the `.xcodeproj` file, which is actually a folder, so that you have to zip it:
 
     # on Mac command line
-    PRAAT_SOURCES="~/Praats/src
+    PRAAT_SOURCES="~/Dropbox/Praats/src"
     cd $PRAAT_SOURCES
-    zip -r $PRAAT_WWW/praat$(PRAAT_VERSION)_xcodeproj.zip praat.xcodeproj
+    zip -r $PRAAT_WWW/praat${PRAAT_VERSION}_xcodeproj.zip praat.xcodeproj
 
-The Windows executables have to be sent from your Cygwin terminal to your Mac.
+The Windows executables have to be sent from your Cygwin terminal or MSYS shell to your Mac.
 It is easiest to do this without a version number (so that you have to supply the number only once),
-so you send them to the intermediate Mac folders `~/builds/win64` and `~/builds/win32`.
-On Cygwin you can define:
+so you send them to the intermediate Mac folders `~/Dropbox/Praats/bin/win-intel64`
+and `~/Dropbox/Praats/bin/win-intel32` and `~/Dropbox/Praats/bin/win-arm64`.
+On Cygwin or MSYS you can define:
 
     # in Cygwin:~/.profile
-    alias praat-dist="praat-build && rsync -t ~/praats/Praat.exe /cygdrive/z/builds/win64"
-    alias praat32-dist="praat32-build && rsync -t ~/praats32/Praat.exe /cygdrive/z/builds/win32"
+    alias praat-dist="praat-build && rsync -t ~/praats/Praat.exe /cygdrive/z/Dropbox/Praats/bin/win-intel64"
+    alias praat32-dist="praat32-build && rsync -t ~/praats32/Praat.exe /cygdrive/z/Dropbox/Praats/bin/win-intel32"
+
+    # in MSYS:~/.bashrc
+    alias praat-dist="praat-build && rsync -t ~/praats/Praat.exe /z/Dropbox/Praats/bin/win-arm64"
 
 so that you can “upload” the two executables to the Mac with
 
@@ -531,18 +602,29 @@ so that you can “upload” the two executables to the Mac with
     praat-dist
     praat32-dist
 
+    # on MSYS command line
+    praat-dist
+
 The four Linux executables have to be sent from your Ubuntu terminal to your Mac,
-namely to the folders `~/builds/linux64` (which will contain `praat`, `praat_barren` and
-`praat_nogui`) and `~/builds/chrome64` (which will contain only `praat`).
+namely to the folder `~/Dropbox/Praats/bin/linux_intel64` or `~/Dropbox/Praats/bin/linux_arm64`
+(which will contain `praat`, `praat_barren` and `praat_nogui`), and to the folder
+`~/Dropbox/Praats/bin/chrome_intel64` or `~/Dropbox/Praats/bin/chrome_arm64`
+(which will contain only `praat`).
 On Ubuntu you can define
 
-    # in Ubuntu:~/.bash_aliases
-    alias praat-dist="praat-build && rsync -t ~/praats/praat /media/psf/Home/builds/linux64"
-    alias praatb-dist="praatb-build && rsync -t ~/praatsb/praat_barren /media/psf/Home/builds/linux64"
-    alias praatn-dist="praatn-build && rsync -t ~/praatsn/praat_nogui /media/psf/Home/builds/linux64"
-    alias praatc-dist="praatc-build && rsync -t ~/praatsc/praat /media/psf/Home/builds/chrome64"
+    # in Intel64 Ubuntu:~/.bash_aliases
+    alias praat-dist="praat-build && rsync -t ~/praats/praat /media/psf/Home/Dropbox/Praats/bin/linux-intel64"
+    alias praatb-dist="praatb-build && rsync -t ~/praatsb/praat_barren /media/psf/Home/Dropbox/Praats/bin/linux-intel64"
+    alias praatn-dist="praatn-build && rsync -t ~/praatsn/praat_nogui /media/psf/Home/Dropbox/Praats/bin/linux-intel64"
+    alias praatc-dist="praatc-build && rsync -t ~/praatsc/praat /media/psf/Home/Dropbox/Praats/bin/chrome-intel64"
+
+    # in ARM64 Ubuntu:~/.bash_aliases
+    alias praat-dist="praat-build && rsync -t ~/praats/praat /media/psf/Home/Dropbox/Praats/bin/linux-arm64"
+    alias praatb-dist="praatb-build && rsync -t ~/praatsb/praat_barren /media/psf/Home/Dropbox/Praats/bin/linux-arm64"
+    alias praatn-dist="praatn-build && rsync -t ~/praatsn/praat_nogui /media/psf/Home/Dropbox/Praats/bin/linux-arm64"
+    alias praatc-dist="praatc-build && rsync -t ~/praatsc/praat /media/psf/Home/Dropbox/Praats/bin/chrome-arm64"
 
-so that you can “upload” the five executables to the Mac with
+so that you can “upload” the four executables to the Mac with
 
     # on Ubuntu command line
     praat-dist
@@ -553,34 +635,52 @@ so that you can “upload” the five executables to the Mac with
 You can fetch the Raspberry Pi edition directly from your Raspberry Pi:
 
     # on Mac command line
-    rsync -tpvz pi at 192.168.1.2:~/praats/praat ~/builds/rpi_armv7
+    rsync -tpvz pi at 192.168.1.2:~/praats/praat ~/Dropbox/Praats/bin/rpi-armv7
 
-When the folders under `~/builds`, namely `win64`, `win32`, `linux64`, `chrome64` and `rpi_armv7`
-all contain enough new executables (there should be 1, 1, 3, 1 and 1, respectively),
-you can issue the following commands to create the packages and install them in `~/Praats/www`:
+When the folders under `~/Dropbox/Praats/bin`, namely `win-intel64`, `win-intel32`, `win-arm64`,
+`linux-intel64`, `linux-arm64`, `chrome-intel64`, `chrome-arm64` and `rpi-armv7`
+all contain enough new executables (there should be 1, 1, 1, 3, 3, 1, 1 and 1, respectively),
+you can issue the following commands to create the packages and install them in `~/Dropbox/Praats/www`:
 
     # on Mac command line
-    zip $PRAAT_WWW/praat$(PRAAT_VERSION)_win64.zip ~/builds/win64/Praat.exe
-    zip $PRAAT_WWW/praat$(PRAAT_VERSION)_win32.zip ~/builds/win32/Praat.exe
-    ( cd ~/builds/linux64 &&\
-      tar cvf praat$(PRAAT_VERSION)_linux64.tar praat &&\
-      gzip praat$(PRAAT_VERSION)_linux64.tar &&\
-      mv praat$(PRAAT_VERSION)_linux64.tar.gz $PRAAT_WWW )
-    ( cd ~/builds/linux64 &&\
-      tar cvf praat$(PRAAT_VERSION)_linux64barren.tar praat_barren &&\
-      gzip praat$(PRAAT_VERSION)_linux64barren.tar &&\
-      mv praat$(PRAAT_VERSION)_linux64barren.tar.gz $PRAAT_WWW )
-    ( cd ~/builds/linux64 &&\
-      tar cvf praat$(PRAAT_VERSION)_linux64nogui.tar praat_nogui &&\
-      gzip praat$(PRAAT_VERSION)_linux64nogui.tar &&\
-      mv praat$(PRAAT_VERSION)_linux64nogui.tar.gz $PRAAT_WWW )
-    ( cd ~/builds/chrome64 &&\
-      tar cvf praat$(PRAAT_VERSION)_chrome64.tar praat &&\
-      gzip praat$(PRAAT_VERSION)_chrome64.tar &&\
-      mv praat$(PRAAT_VERSION)_chrome64.tar.gz $PRAAT_WWW )
-    ( cd ~/builds/rpi_armv7 &&\
-      tar cvf praat$(PRAAT_VERSION)_rpi_armv7.tar praat &&\
-      gzip praat$(PRAAT_VERSION)_rpi_armv7.tar &&\
-      mv praat$(PRAAT_VERSION)_rpi_armv7.tar.gz $PRAAT_WWW )
+    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-intel64.zip ~/Dropbox/Praats/bin/win-intel64/Praat.exe
+    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-intel32.zip ~/Dropbox/Praats/bin/win-intel32/Praat.exe
+    zip $PRAAT_WWW/praat${PRAAT_VERSION}_win-arm64.zip ~/Dropbox/Praats/bin/win-arm64/Praat.exe
+    ( cd ~/Dropbox/Praats/bin/linux-intel64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-intel64.tar praat &&\
+      gzip praat${PRAAT_VERSION}_linux-intel64.tar &&\
+      mv praat${PRAAT_VERSION}_linux-intel64.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/linux-intel64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-intel64-barren.tar praat_barren &&\
+      gzip praat${PRAAT_VERSION}_linux-intel64-barren.tar &&\
+      mv praat${PRAAT_VERSION}_linux-intel64-barren.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/linux-intel64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-intel64-nogui.tar praat_nogui &&\
+      gzip praat${PRAAT_VERSION}_linux-intel64-nogui.tar &&\
+      mv praat${PRAAT_VERSION}_linux-intel64-nogui.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/chrome-intel64 &&\
+      tar cvf praat${PRAAT_VERSION}_chrome-intel64.tar praat &&\
+      gzip praat${PRAAT_VERSION}_chrome-intel64.tar &&\
+      mv praat${PRAAT_VERSION}_chrome-intel64.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/linux-arm64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-arm64.tar praat &&\
+      gzip praat${PRAAT_VERSION}_linux-arm64.tar &&\
+      mv praat${PRAAT_VERSION}_linux-arm64.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/linux-arm64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-arm64-barren.tar praat_barren &&\
+      gzip praat${PRAAT_VERSION}_linux-arm64-barren.tar &&\
+      mv praat${PRAAT_VERSION}_linux-arm64-barren.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/linux-arm64 &&\
+      tar cvf praat${PRAAT_VERSION}_linux-arm64-nogui.tar praat_nogui &&\
+      gzip praat${PRAAT_VERSION}_linux-arm64-nogui.tar &&\
+      mv praat${PRAAT_VERSION}_linux-arm64-nogui.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/chrome-arm64 &&\
+      tar cvf praat${PRAAT_VERSION}_chrome-arm64.tar praat &&\
+      gzip praat${PRAAT_VERSION}_chrome-arm64.tar &&\
+      mv praat${PRAAT_VERSION}_chrome-arm64.tar.gz $PRAAT_WWW )
+    ( cd ~/Dropbox/Praats/bin/rpi-armv7 &&\
+      tar cvf praat${PRAAT_VERSION}_rpi-armv7.tar praat &&\
+      gzip praat${PRAAT_VERSION}_rpi-armv7.tar &&\
+      mv praat${PRAAT_VERSION}_rpi-armv7.tar.gz $PRAAT_WWW )
 
 Finally, you can update your website and/or create a new release on GitHub.


=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+praat (6.4.03+dfsg-1) unstable; urgency=medium
+
+  * New upstream version 6.4.03+dfsg
+  * d/p/fix-action-titles.patch: Drop patch (applied upstream)
+
+ -- Rafael Laboissière <rafael at debian.org>  Fri, 05 Jan 2024 15:44:39 -0300
+
 praat (6.4.02+dfsg-1) unstable; urgency=medium
 
   * New upstream version 6.4.02+dfsg


=====================================
debian/patches/fix-action-titles.patch deleted
=====================================
@@ -1,38 +0,0 @@
-Description: Fix some action titles
-Author: Rafael Laboissière <rafael at debian.org>
-Forwarded: https://github.com/praat/praat/pull/2575
-Last-Update: 2024-01-04
-
---- praat-6.4.02+dfsg.orig/dwtools/praat_David_init.cpp
-+++ praat-6.4.02+dfsg/dwtools/praat_David_init.cpp
-@@ -10547,7 +10547,7 @@ void praat_David_init () {
- 	praat_addAction1 (classTableOfReal, 2, U"To TableOfReal (cross-correlations)...", nullptr, GuiMenu_HIDDEN | GuiMenu_DEPTH_1,
- 			CONVERT_TWO_TO_ONE__TableOfReal_TableOfReal_crossCorrelations);
- 
--	praat_addAction1 (classTableOfReal, 1, U"To PatternList and Categories... || To PatternList and Categories... || Split into Pattern and Categories...", U"To Matrix", 1,
-+	praat_addAction1 (classTableOfReal, 1, U"To PatternList and Categories... || To Pattern and Categories... || Split into Pattern and Categories...", U"To Matrix", 1,
- 			CONVERT_EACH_TO_ONE__TableOfReal_to_PatternList_and_Categories);   // alternatives COMPATIBILITY <= 2015
- 	praat_addAction1 (classTableOfReal, 0, U"To Permutation (sort row labels)", U"To Matrix", 1,
- 			CONVERT_EACH_TO_ONE__TableOfReal_to_Permutation_sortRowlabels);
---- praat-6.4.02+dfsg.orig/dwtest/test_Sound_voiceActivity.praat
-+++ praat-6.4.02+dfsg/dwtest/test_Sound_voiceActivity.praat
-@@ -20,7 +20,7 @@ assert label$ = "sounding"
- 
- selectObject: sound
- spectrogram = To Spectrogram: 0.02, 6000, 0.01, 20, "Hanning (sine-squared)"
--matrix = Get longterm spectral flatness: 0.3, 0.1, 70, 6000
-+matrix = Get long-term spectral flatness: 0.3, 0.1, 70, 6000
- 
- 
- removeObject: noise, textgrid, matrix, spectrogram, sound, textgrid2
---- praat-6.4.02+dfsg.orig/dwtest/test_FFNet.praat
-+++ praat-6.4.02+dfsg/dwtest/test_FFNet.praat
-@@ -15,7 +15,7 @@ selectObject: ffnet
- 
- selectObject: pattern, cat
- tab = To TableOfReal
--To Pattern and Categories: 0, 0, 0, 0
-+To PatternList and Categories: 0, 0, 0, 0
- Remove
- removeObject: tab
- 


=====================================
debian/patches/series
=====================================
@@ -4,4 +4,3 @@ dwtest-random-seed.patch
 honor-cppflags.patch
 drop-espeak-demonic-file.patch
 praat-launch-in-desktop.patch
-fix-action-titles.patch


=====================================
dwtest/test_Sound_voiceActivity.praat
=====================================
@@ -1,6 +1,6 @@
 # test_Sound_voiceActivity.praat
 # djmw 20210317
-
+# ppgb 20240104 typo
 
 random_initializeWithSeedUnsafelyButPredictably (0.5)
 noise = Create Sound from formula: "noise", 1, 0, 1, 44100, ~ randomGauss(0,1)
@@ -20,7 +20,7 @@ assert label$ = "sounding"
 
 selectObject: sound
 spectrogram = To Spectrogram: 0.02, 6000, 0.01, 20, "Hanning (sine-squared)"
-matrix = Get longterm spectral flatness: 0.3, 0.1, 70, 6000
+matrix = Get long-term spectral flatness: 0.3, 0.1, 70, 6000
 
 
 removeObject: noise, textgrid, matrix, spectrogram, sound, textgrid2


=====================================
dwtools/praat_David_init.cpp
=====================================
@@ -10547,7 +10547,7 @@ void praat_David_init () {
 	praat_addAction1 (classTableOfReal, 2, U"To TableOfReal (cross-correlations)...", nullptr, GuiMenu_HIDDEN | GuiMenu_DEPTH_1,
 			CONVERT_TWO_TO_ONE__TableOfReal_TableOfReal_crossCorrelations);
 
-	praat_addAction1 (classTableOfReal, 1, U"To PatternList and Categories... || To PatternList and Categories... || Split into Pattern and Categories...", U"To Matrix", 1,
+	praat_addAction1 (classTableOfReal, 1, U"To PatternList and Categories... || To Pattern and Categories... || Split into Pattern and Categories...", U"To Matrix", 1,
 			CONVERT_EACH_TO_ONE__TableOfReal_to_PatternList_and_Categories);   // alternatives COMPATIBILITY <= 2015
 	praat_addAction1 (classTableOfReal, 0, U"To Permutation (sort row labels)", U"To Matrix", 1,
 			CONVERT_EACH_TO_ONE__TableOfReal_to_Permutation_sortRowlabels);


=====================================
fon/manual_scripting.cpp
=====================================
@@ -1198,7 +1198,7 @@ LIST_ITEM (U"@@Scripting 5.8. Including other scripts@")
 LIST_ITEM (U"@@Scripting 5.9. Quitting@ (exit)")
 MAN_END
 
-MAN_BEGIN (U"Scripting 5.1. Variables", U"ppgb", 20201229;20230416)
+MAN_BEGIN (U"Scripting 5.1. Variables", U"ppgb", 20201229;20230416;20240103)
 INTRO (U"A %variable is a location in your computer’s memory that has a name and where you can store something, "
 	"as explained in @@Scripting 3.2. Numeric variables|\\SS3.2@ and @@Scripting 3.4. String variables|\\SS3.4 at . "
 	"In a Praat script, you can store numbers and texts, i.e. you can use %%numeric variables% and %%string variables%.")
@@ -1273,9 +1273,14 @@ CODE (U"The jitter is 0.00002%.")
 ENTRY (U"Predefined variables")
 NORMAL (U"All of the variables you saw earlier in this tutorial were defined at the first moment a value was assigned to them. "
 	"Some variables, however, are already defined implicitly at the start of your script.")
-NORMAL (U"Some predefined ##numeric variables# are `macintosh`, `windows`, and `unix`, which are 1 if the script "
-	"is running on a Macintosh, Windows, or Unix platform (respectively), and which are otherwise zero. "
-	"Another one is `praatVersion`, which is e.g. " stringize(PRAAT_VERSION_NUM) " for the current version of Praat.")
+NORMAL (U"Some predefined ##numeric variables# are `macintosh`, `windows`, and `unix`, which are 1 if your edition of Praat "
+	"was built for the Macintosh, Windows, or Unix platform (respectively), and which are otherwise zero. "
+	"Likewise, we have `praat_32bit` and `praat_64bit`, of which one is 1 and the other 0, "
+	"depending on whether your edition of Praat was built for 32-bit or 64-bit computers. "
+	"More precisely, we have `praat_intel32`, `praat_intel64` and `praat_arm64`, one of which is 1 (and the others 0) "
+	"depending on whether the type of processor chip that your edition of Praat was made for is "
+	"32-bit Intel (= x86, i386, i686), or 64-bit Intel (= AMD64), or ARM64 (= Aarch64). "
+	"Another predefined numeric variable is `praatVersion`, which is e.g. " stringize(PRAAT_VERSION_NUM) " for the current version of Praat.")
 NORMAL (U"Some ##predefined string variables# are `newline$`, `tab$`, and `shellDirectory$`. "
 	"The last one specifies the folder that was the default folder when Praat started up; "
 	"you can use it in scripts that run from the Unix or Windows command line. "


=====================================
fon/manual_whatsnew.cpp
=====================================
@@ -25,10 +25,14 @@ MAN_PAGES_BEGIN
 R"~~~(
 ################################################################################
 "What's new?"
-© Paul Boersma 1995–2023
+© Paul Boersma 1995–2024
 
 Latest changes in Praat.
 
+##6.4.03# (4 January 2024)
+• ARM64 edition for Linux.
+• ARM64 edition for Windows.
+
 ##6.4.02# (30 December 2023)
 • Saving sounds as MP3 files.
 


=====================================
makefiles/makefile.defs.msys-arm64
=====================================
@@ -0,0 +1,29 @@
+# File: makefile.defs.msys-arm64
+
+# System: clang on Windows under MSYS2
+# Paul Boersma 2024-01-03
+
+PREFIX ?=
+
+CC = $(PREFIX)clang
+CXX = $(PREFIX)clang
+LINK = $(CXX)
+
+COMMONFLAGS = -municode -D_FILE_OFFSET_BITS=64 \
+	-O3
+# Probably implicit: -m64 -mwin32 -march=x86_64 -mtune=generic
+
+CFLAGS = -std=gnu99 $(COMMONFLAGS)
+
+# gnu++17 instead of c++17 is necessary to define M_PI in external code
+CXXFLAGS = -std=gnu++17 $(COMMONFLAGS) -Wshadow
+
+EXECUTABLE = Praat.exe
+
+LIBS = -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -lwinspool -static-libgcc -lc++ -lc++abi -mwindows -static
+
+AR = $(PREFIX)ar
+RANLIB = $(PREFIX)ranlib
+WINDRES = $(PREFIX)windres
+ICON = praat_win.o
+MAIN_ICON = main/praat_win.o


=====================================
melder/NUM.h
=====================================
@@ -97,7 +97,7 @@ inline bool NUMequal (double x, double y) {
 		but any undefined value (inf or NaN) *is* equal to --undefined--.
 		This is different from how "==" works in C, hence the following complication.
 	*/
-	return x == y || isundef (x) && isundef (y);
+	return x == y || (isundef (x) && isundef (y));
 }
 inline bool NUMequal (integer x, integer y) {
 	return x == y;


=====================================
melder/melder_kar.h
=====================================
@@ -225,7 +225,7 @@ inline bool Melder_isAsciiDecimalNumber (char32 kar) {
 	We cannot really internationalize std::isxdigit ():
 */
 inline bool Melder_isHexadecimalDigit (char32 kar) {
-	return kar >= U'0' && kar <= U'9' || kar >= U'A' && kar <= U'Z' || kar >= U'a' && kar <= U'z';
+	return (kar >= U'0' && kar <= U'9') || (kar >= U'A' && kar <= U'Z') || (kar >= U'a' && kar <= U'z');
 }
 
 /*


=====================================
sys/Interpreter.cpp
=====================================
@@ -2144,6 +2144,17 @@ void Interpreter_run (Interpreter me, char32 *text, const bool reuseVariables) {
 				Interpreter_addNumericVariable (me, U"windows", 0);
 				Interpreter_addNumericVariable (me, U"unix", 0);
 			#endif
+			#if defined (__aarch64__) || defined (_M_ARM64_)
+				Interpreter_addNumericVariable (me, U"praat_intel32", 0);
+				Interpreter_addNumericVariable (me, U"praat_intel64", 0);
+				Interpreter_addNumericVariable (me, U"praat_arm64", 1);
+			#else
+				Interpreter_addNumericVariable (me, U"praat_intel32", sizeof (void *) == 4);
+				Interpreter_addNumericVariable (me, U"praat_intel64", sizeof (void *) == 8);
+				Interpreter_addNumericVariable (me, U"praat_arm64", 0);
+			#endif
+			Interpreter_addNumericVariable (me, U"praat_32bit", sizeof (void *) == 4);
+			Interpreter_addNumericVariable (me, U"praat_64bit", sizeof (void *) == 8);
 			Interpreter_addNumericVariable (me, U"left", 1);   // deprecated 2010 (Praat 5.2.06)
 			Interpreter_addNumericVariable (me, U"right", 2);   // deprecated 2010 (Praat 5.2.06)
 			Interpreter_addNumericVariable (me, U"mono", 1);   // deprecated 2010 (Praat 5.2.06)


=====================================
sys/oo_WRITE_BINARY.h
=====================================
@@ -66,8 +66,8 @@
 	{ \
 		integer _size = (n); \
 		Melder_assert (_size == our x.size); \
-		for (integer _i = 1; _i <= _size; _i ++) \
-			binput##storage (our x [_i].get(), _filePointer_); { \
+		for (integer _i = 1; _i <= _size; _i ++) { \
+			binput##storage (our x [_i].get(), _filePointer_);  \
 		} \
 	}
 


=====================================
sys/praat.cpp
=====================================
@@ -31,6 +31,7 @@
 	#include <windows.h>
 	#include <fcntl.h>
 	#include <io.h>
+	#include <process.h>   // getpid
 #endif
 
 #include "praatP.h"


=====================================
sys/praat_statistics.cpp
=====================================
@@ -168,6 +168,11 @@ void praat_reportSystemProperties () {
 	#ifdef linux
 		MelderInfo_writeLine (U"Display protocol: probably ", Melder_systemVersion == 'w' ? U"Wayland" : U"X11", U" (but use xeyes to make sure).");
 	#endif
+	#if defined (__aarch64__) || defined (_M_ARM64_)
+		MelderInfo_writeLine (U"Built for processor type: ", U"arm64");
+	#else
+		MelderInfo_writeLine (U"Built for processor type: ", sizeof (void *) == 4 ? U"intel32" : U"intel64");
+	#endif
 	structMelderDir dir {};
 	Melder_getHomeDir (& dir);
 	MelderInfo_writeLine (U"Home folder: ", dir. path);


=====================================
sys/praat_version.h
=====================================
@@ -1,5 +1,5 @@
-#define PRAAT_VERSION_STR 6.4.02
-#define PRAAT_VERSION_NUM 6402
-#define PRAAT_YEAR 2023
-#define PRAAT_MONTH December
-#define PRAAT_DAY 30
+#define PRAAT_VERSION_STR 6.4.03
+#define PRAAT_VERSION_NUM 6403
+#define PRAAT_YEAR 2024
+#define PRAAT_MONTH January
+#define PRAAT_DAY 4


=====================================
test/num/fisherQ.praat
=====================================
@@ -3,7 +3,7 @@
 # 2008-04-07: more accuracy in fisherQ because of GSL (n.b. GSL not to be used in invFisherQ)
 # Computes a significance from zero, given a measured F value.
 # 2020-04-17: checks on behalf of i386
-# 2023-12-30: reduced precision requirements for Mac, because ARM is less precise than Intel64
+# 2024-01-03: reduced precision requirements for ARM64, because it is less precise than Intel64
 
 df1 = 2
 df2 = 70
@@ -14,7 +14,7 @@ writeInfoLine: "fisherQ test: ", fisherQ, " ", fisherQ$
 assert fisherQ$ = "0.00000000005932714540"
 for i to 10000
 	a = randomUniform (3, 4)
-	if macintosh
+	if praat_arm64
 		assert fisherQ (a, 1, 10000) <> undefined   ; 'i' 'a'
 	else
 		assert fisherQ (a, 1, 100000) <> undefined   ; 'i' 'a'
@@ -24,7 +24,7 @@ endfor
 appendInfoLine: "invFisherQ"
 @invFisherQ: 2, 70, 1e-14
 @invFisherQ: 70, 2, 1e-14
- at invFisherQ: 1, if windows then 100 else if macintosh then 10000 else 100000 fi fi, 1e-11
+ at invFisherQ: 1, if windows then 100 else if praat_arm64 then 10000 else 100000 fi fi, 1e-11
 @invFisherQ: 1, 1, 1e-14
 @invFisherQ: 100000, 1, 1e-11
 @invFisherQ: 100, 100, 1e-9
@@ -83,7 +83,7 @@ endproc
 #
 # Things that used to go wrong.
 #
-if macintosh
+if praat_arm64
 	assert invFisherQ (0.13, 1, 1e5) <> undefined ; used to exceed 60 iterations
 else
 	assert invFisherQ (0.13, 1, 1e9) <> undefined ; used to exceed 60 iterations



View it on GitLab: https://salsa.debian.org/med-team/praat/-/compare/b246cc802f08283f042249ebe504d052ac7f6234...8419420b81a674da6f2b3073ee033a28e014fe19

-- 
View it on GitLab: https://salsa.debian.org/med-team/praat/-/compare/b246cc802f08283f042249ebe504d052ac7f6234...8419420b81a674da6f2b3073ee033a28e014fe19
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20240106/941de32a/attachment-0001.htm>


More information about the debian-med-commit mailing list