diff --git a/NEWS b/NEWS index cef29a98..eb4ad0dd 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,20 @@ +20201022 + +* --termseq now works for jobs running remotely. + +* parsort: Performance optimized for 64-core machines. + +* Bug fixes and man page updates. + +News about GNU Parallel: + +* Juan Sierra Pons has made a testimonial: + http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4 + +* 「翻译」在生物信息学中使用 GNU-Parallel + https://cloud.tencent.com/developer/article/1705499 + + 20200922 * New CPU detection for GNU/Linux. diff --git a/README b/README index e6d1b9fb..21e205e5 100644 --- a/README +++ b/README @@ -57,11 +57,11 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20200922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20200922.tar.bz2.sig - gpg parallel-20200922.tar.bz2.sig - bzip2 -dc parallel-20200922.tar.bz2 | tar xvf - - cd parallel-20200922 + wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2.sig + gpg parallel-20201022.tar.bz2.sig + bzip2 -dc parallel-20201022.tar.bz2 | tar xvf - + cd parallel-20201022 ./configure && make && sudo make install @@ -70,11 +70,11 @@ Full installation of GNU Parallel is as simple as: If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget https://ftpmirror.gnu.org/parallel/parallel-20200922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20200922.tar.bz2.sig - gpg parallel-20200922.tar.bz2.sig - bzip2 -dc parallel-20200922.tar.bz2 | tar xvf - - cd parallel-20200922 + wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2.sig + gpg parallel-20201022.tar.bz2.sig + bzip2 -dc parallel-20201022.tar.bz2 | tar xvf - + cd parallel-20201022 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel @@ -122,8 +122,8 @@ will love you for it. When using programs that use GNU Parallel to process data for publication please cite: - Tange, O. (2020, September 22). GNU Parallel 20200922 ('Ginsburg'). - Zenodo. https://doi.org/10.5281/zenodo.4045386 + Tange, O. (2020, October 22). GNU Parallel 20201022 ('SamuelPaty'). + Zenodo. https://doi.org/10.5281/zenodo.4118697 Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free diff --git a/configure b/configure index d2b0a2ed..69b5eb56 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20200922. +# Generated by GNU Autoconf 2.69 for parallel 20201022. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20200922' -PACKAGE_STRING='parallel 20200922' +PACKAGE_VERSION='20201022' +PACKAGE_STRING='parallel 20201022' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures parallel 20200922 to adapt to many kinds of systems. +\`configure' configures parallel 20201022 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1281,7 +1281,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20200922:";; + short | recursive ) echo "Configuration of parallel 20201022:";; esac cat <<\_ACEOF @@ -1357,7 +1357,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20200922 +parallel configure 20201022 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by parallel $as_me 20200922, which was +It was created by parallel $as_me 20201022, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2237,7 +2237,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20200922' + VERSION='20201022' cat >>confdefs.h <<_ACEOF @@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by parallel $as_me 20200922, which was +This file was extended by parallel $as_me 20201022, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2942,7 +2942,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -parallel config.status 20200922 +parallel config.status 20201022 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 65cbb407..1ed2b79b 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20200922], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20201022], [bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/doc/haikus b/doc/haikus index aa3148fe..49710994 100644 --- a/doc/haikus +++ b/doc/haikus @@ -8,11 +8,6 @@ Quote of the month: My favorite man page is that of GNU parallel. -- Jeroen Janssens @jeroenhjanssens@twitter - I get a weird sense of satisfaction every single time I see the - lovely logo of #GNU Parallel (plus, what an underrated piece of - great software!) - -- Emre Sevinç @EmreSevinc@twitter - I have gotten a *ton* of mileage out of jq, awk, and GNU parallel, even at multi-GB sizes. -- Eric Wolak @ericthewolak@twitter @@ -72,6 +67,11 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html === Used === + I get a weird sense of satisfaction every single time I see the + lovely logo of #GNU Parallel (plus, what an underrated piece of + great software!) + -- Emre Sevinç @EmreSevinc@twitter + My favorite man page is that of GNU parallel. -- Jeroen Janssens @jeroenhjanssens@twitter diff --git a/doc/release_new_version b/doc/release_new_version index a08cf9f1..75169af9 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -198,11 +198,9 @@ GNU Parallel 20201022 ('Samuel Paty') <<[stable]>> has been released. It is avai <> +* --termseq now works for jobs running remotely. -Please help spreading GNU Parallel by making a testimonial video like -Juan Sierra Pons: - -http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4 +* Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4 It does not have to be as detailed as Juan's. It is perfectly fine if you just say your name, and what field you are using GNU Parallel for. @@ -212,7 +210,7 @@ Quote of the month: New in this release: -* --termseq now works for remote running jobs. +* --termseq now works for jobs running remotely. * parsort: Performance optimized for 64-core machines. diff --git a/packager/obs/home:tange/parallel/.osc/_files b/packager/obs/home:tange/parallel/.osc/_files index d3ad9dcb..dbb1482f 100644 --- a/packager/obs/home:tange/parallel/.osc/_files +++ b/packager/obs/home:tange/parallel/.osc/_files @@ -1,7 +1,7 @@ - - - - - - + + + + + + diff --git a/packager/obs/home:tange/parallel/.osc/_meta b/packager/obs/home:tange/parallel/.osc/_meta index 2184cc69..62d847b3 100644 --- a/packager/obs/home:tange/parallel/.osc/_meta +++ b/packager/obs/home:tange/parallel/.osc/_meta @@ -1,35 +1,35 @@ GNU Parallel - = About GNU Parallel = - -GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job is can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel. - -If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops. - -GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it -possible to use output from GNU Parallel as input for other programs. - -You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/ - -Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1 or walk through the tutorial http://www.gnu.org/software/parallel/parallel_tutorial.html - -When using GNU Parallel for a publication please cite as per: 'parallel --citation' - - -= About GNU SQL = - -GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries. - -The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell. - -When using GNU SQL for a publication please cite: - -O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32. - - -= About GNU Niceload = - -GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit. + = About GNU Parallel = + +GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job is can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel. + +If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops. + +GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it +possible to use output from GNU Parallel as input for other programs. + +You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/ + +Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1 or walk through the tutorial http://www.gnu.org/software/parallel/parallel_tutorial.html + +When using GNU Parallel for a publication please cite as per: 'parallel --citation' + + += About GNU SQL = + +GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries. + +The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell. + +When using GNU SQL for a publication please cite: + +O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32. + + += About GNU Niceload = + +GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit. diff --git a/packager/obs/home:tange/parallel/.osc/parallel.spec b/packager/obs/home:tange/parallel/.osc/parallel.spec index b24272f2..a897ee75 100644 --- a/packager/obs/home:tange/parallel/.osc/parallel.spec +++ b/packager/obs/home:tange/parallel/.osc/parallel.spec @@ -1,7 +1,7 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20200922 +Version: 20201022 Release: 1.3 License: GPL-3.0-or-later Group: Productivity/File utilities diff --git a/src/env_parallel.ash b/src/env_parallel.ash index a244ac92..2a2e43a7 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -382,7 +382,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.bash b/src/env_parallel.bash index 54889b54..5ceb283f 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -384,7 +384,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.csh b/src/env_parallel.csh index d4d5e6c1..0a06d715 100755 --- a/src/env_parallel.csh +++ b/src/env_parallel.csh @@ -83,7 +83,7 @@ else # Make a tmpfile for the variable definitions + alias set _tMpaLLfILe=`_tempfile` foreach _vARnAmE ($_vARnAmES); - # These 3 lines break in csh version 20110502-3 + # These 3 lines break in csh ver. 20110502-3 # if not defined: next eval if'(! $?'$_vARnAmE') continue' # if $#myvar <= 1 echo scalar_myvar=$var diff --git a/src/env_parallel.dash b/src/env_parallel.dash index 9c6ea054..0779ac05 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -382,7 +382,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.ksh b/src/env_parallel.ksh index 148e86aa..2ceb0d7d 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -365,7 +365,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.mksh b/src/env_parallel.mksh index 644c932f..afe27b8e 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -368,7 +368,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.sh b/src/env_parallel.sh index 9c8e21af..94bb9768 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -382,7 +382,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.tcsh b/src/env_parallel.tcsh index a6be815c..70346942 100755 --- a/src/env_parallel.tcsh +++ b/src/env_parallel.tcsh @@ -83,7 +83,7 @@ else # Make a tmpfile for the variable definitions + alias set _tMpaLLfILe=`_tempfile` foreach _vARnAmE ($_vARnAmES); - # These 3 lines break in csh version 20110502-3 + # These 3 lines break in csh version 20201022-3 # if not defined: next eval if'(! $?'$_vARnAmE') continue' # if $#myvar <= 1 echo scalar_myvar=$var diff --git a/src/env_parallel.zsh b/src/env_parallel.zsh index c90c6e9a..d3acff2b 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -359,7 +359,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20201010 (GNU parallel `parallel --minversion 1`)" + echo "parset 20201022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/niceload b/src/niceload index 9d3f99ca..ea1f98aa 100755 --- a/src/niceload +++ b/src/niceload @@ -23,7 +23,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20200923; +$Global::version = 20201022; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff --git a/src/parallel b/src/parallel index 97682ba2..ea31495d 100755 --- a/src/parallel +++ b/src/parallel @@ -2164,7 +2164,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20200923; + $Global::version = 20201022; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -4924,8 +4924,8 @@ sub usage() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - " Tange, O. (2020, September 22). GNU Parallel 20200922 ('Ginsburg').", - " Zenodo. https://doi.org/10.5281/zenodo.4045386", + " Tange, O. (2020, October 22). GNU Parallel 20201022 ('SamuelPaty').", + " Zenodo. https://doi.org/10.5281/zenodo.4118697", "", # Before changing this line, please read # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice @@ -4955,8 +4955,8 @@ sub citation_notice() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - " Tange, O. (2020, September 22). GNU Parallel 20200922 ('Ginsburg').", - " Zenodo. https://doi.org/10.5281/zenodo.4045386", + " Tange, O. (2020, October 22). GNU Parallel 20201022 ('SamuelPaty').", + " Zenodo. https://doi.org/10.5281/zenodo.4118697", "", # Before changing this line, please read # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and @@ -5069,20 +5069,20 @@ sub citation() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - "\@software{tange_2020_4045386,", + "\@software{tange_2020_4118697,", " author = {Tange, Ole},", - " title = {GNU Parallel 20200922 ('Ginsburg')},", - " month = Sep,", + " title = {GNU Parallel 20201022 ('SamuelPaty')},", + " month = Oct,", " year = 2020,", " note = {{GNU Parallel is a general parallelizer to run", " multiple serial command line programs in parallel", " without changing them.}},", " publisher = {Zenodo},", - " doi = {10.5281/zenodo.4045386},", - " url = {https://doi.org/10.5281/zenodo.4045386}", + " doi = {10.5281/zenodo.4118697},", + " url = {https://doi.org/10.5281/zenodo.4118697}", "}", "", - "(Feel free to use \\nocite{tange_2020_4045386})", + "(Feel free to use \\nocite{tange_2020_4118697})", "", # Before changing this line, please read # https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice and diff --git a/src/parsort b/src/parsort index ce0a20cc..7b681126 100755 --- a/src/parsort +++ b/src/parsort @@ -118,7 +118,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20201011; +$Global::version = 20201022; if($opt::version) { version(); exit 0; } @Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)]; #if($opt::zero_terminated) { $/ = "\0"; } diff --git a/src/sql b/src/sql index 7be5af52..0c2e1cab 100755 --- a/src/sql +++ b/src/sql @@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20200923; + $Global::version = 20201022; $Global::progname = 'sql'; # This must be done first as this may exec myself