Released as 20190422 ('Invitation')

This commit is contained in:
Ole Tange 2019-04-21 20:16:33 +02:00
parent e475d04069
commit 3319fcad5b
23 changed files with 351 additions and 145 deletions

View file

@ -1,5 +1,6 @@
People who have helped GNU Parallel different ways.
Renan Valieris: Maintaining GNU Parallel for Anaconda Cloud.
Jakub Kulík: Maintaining GNU Parallel for Solaris-userland.
Rich Burridge: Maintaining GNU Parallel for Solaris-userland.
Jonathan Kamens: Bug patch for chomp.

7
NEWS
View file

@ -1,3 +1,10 @@
20190422
* Invitation to the 10 years anniversary next year.
* Bug fixes and man page updates.
20190322
* SIGTERM is changed to SIGHUP, so sending SIGHUP will make GNU

12
README
View file

@ -44,9 +44,9 @@ document.
Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20190322.tar.bz2
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
cd parallel-20190322
wget https://ftpmirror.gnu.org/parallel/parallel-20190422.tar.bz2
bzip2 -dc parallel-20190422.tar.bz2 | tar xvf -
cd parallel-20190422
./configure && make && sudo make install
@ -55,9 +55,9 @@ 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-20190322.tar.bz2
bzip2 -dc parallel-20190322.tar.bz2 | tar xvf -
cd parallel-20190322
wget https://ftpmirror.gnu.org/parallel/parallel-20190422.tar.bz2
bzip2 -dc parallel-20190422.tar.bz2 | tar xvf -
cd parallel-20190422
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for parallel 20190322.
# Generated by GNU Autoconf 2.69 for parallel 20190422.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20190322'
PACKAGE_STRING='parallel 20190322'
PACKAGE_VERSION='20190422'
PACKAGE_STRING='parallel 20190422'
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 20190322 to adapt to many kinds of systems.
\`configure' configures parallel 20190422 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 20190322:";;
short | recursive ) echo "Configuration of parallel 20190422:";;
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 20190322
parallel configure 20190422
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 20190322, which was
It was created by parallel $as_me 20190422, 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='20190322'
VERSION='20190422'
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 20190322, which was
This file was extended by parallel $as_me 20190422, 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 20190322
parallel config.status 20190422
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20190322], [bug-parallel@gnu.org])
AC_INIT([parallel], [20190422], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -2,21 +2,35 @@
> Why does GNU Parallel show a citation notice?
GNU Parallel is indirectly funded through citations. It is therefore important for the long term survival of GNU Parallel that it is cited. The citation notice makes users aware of this.
GNU Parallel is indirectly funded through citations.
GNU Parallel is funded by me having a paid job that allows for
maintaining GNU Parallel. This is much easier to get if GNU Parallel
is cited in scientific journals, and history has shown that
researchers forget to do this if they are not reminded explicitly.
It is therefore important for the long term survival of GNU Parallel
that it is cited. The citation notice makes users aware of this.
See also: https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
> Is the citation notice compatible with GPLv3?
Yes. The wording has been cleared by Richard M. Stallman to be compatible with GPLv3. This is because the citation notice is not part of the license, but part of academic tradition.
Yes. The wording has been cleared by Richard M. Stallman to be
compatible with GPLv3. This is because the citation notice is not part
of the license, but part of academic tradition.
Therefore the notice is not adding a term that would require citation as mentioned on: https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
Therefore the notice is not adding a term that would require citation
as mentioned on:
https://www.gnu.org/licenses/gpl-faq.en.html#RequireCitation
> Do automated scripts break if the notice is not silenced?
No. Not a single time has that happened. This is due to the notice only being printed, if the output is to the screen - not if the output is to a file or a pipe.
No. Not a single time has that happened. This is due to the notice
only being printed, if the output is to the screen - not if the output
is to a file or a pipe.
> How do I silence the citation notice?
@ -25,9 +39,16 @@ Run this once:
parallel --citation
It takes less than 10 seconds to do and is thus comparable to an 'OK. Do not show this again'-dialog box seen in Firefox and similar programs.
It takes less than 10 seconds to do and is thus comparable to an
'OK. Do not show this again'-dialog box seen in Firefox and similar
programs.
It is even optional to run this, as GNU Parallel will work without having 'parallel --citation' run first (in other words it is _not_ comparable to a clickwrap license, that must be accepted before the program will run). However, not running it does not change that academic tradition requires you to cite in scientific articles. That tradition requires you to cite even if there had been no notice.
It is even optional to run this, as GNU Parallel will work without
having 'parallel --citation' run first (in other words it is _not_
comparable to a clickwrap license, that must be accepted before the
program will run). However, not running it does not change that
academic tradition requires you to cite in scientific articles. That
tradition requires you to cite even if there had been no notice.
> I do not write scientific articles. Does the notice apply to me?
@ -37,7 +58,8 @@ The notice is only relevant if you write scientific articles.
> What shows citing software is an academic tradition?
These links say: Yes, you should cite software, and if the author suggests a way of citing, use that.
These links say: Yes, you should cite software, and if the author
suggests a way of citing, use that.
* https://blog.apastyle.org/apastyle/2015/01/how-to-cite-software-in-apa-style.html
* https://libguides.mit.edu/c.php?g=551454&p=3900280
@ -48,12 +70,18 @@ These links say: Yes, you should cite software, and if the author suggests a way
* https://guides.lib.monash.edu/c.php?g=219786&p=1454293
* https://www.maxqda.com/how-to-cite-maxqda
If you feel the benefit from using GNU Parallel is too small to warrant a citation, then prove that by simply using another tool. If you replace your use of GNU Parallel with another tool, you obviously do not have to cite GNU Parallel. If it is too much work replacing the use of GNU Parallel, then it is a good indication that the benefit is big enough to warrant a citation.
If you feel the benefit from using GNU Parallel is too small to
warrant a citation, then prove that by simply using another tool. If
you replace your use of GNU Parallel with another tool, you obviously
do not have to cite GNU Parallel. If it is too much work replacing the
use of GNU Parallel, then it is a good indication that the benefit is
big enough to warrant a citation.
> Do other software tools show how to cite?
Here are other examples of software showing how to cite. Some of these refer to peer-reviewed articles - others do not:
Here are other examples of software showing how to cite. Some of these
refer to peer-reviewed articles - others do not:
* https://www.scipy.org/citing.html
* https://octave.org/doc/interpreter/Citing-Octave-in-Publications.html
@ -71,62 +99,107 @@ Here are other examples of software showing how to cite. Some of these refer to
> I do not like the notice. Can I fork GNU Parallel and remove it?
Yes. GNU Parallel is released under GNU GPLv3 and thus you are allowed to fork the code. But you have to make sure that your forked version cannot be confused with the original, so for one thing you cannot call it anything similar to GNU Parallel as that would cause confusion between your forked version and the original. This is also why we have CentOS (and not RedHat Free), and IceCat (and not Firefox Free). This is also covered in DFSG ("The license may require derived works to carry a different name or version number from the original software").
Yes. GNU Parallel is released under GNU GPLv3 and thus you are allowed
to fork the code. But you have to make sure that your forked version
cannot be confused with the original, so for one thing you cannot call
it anything similar to GNU Parallel as that would cause confusion
between your forked version and the original. Also documentation
cannot be confused with the documentation for GNU Parallel. This is
also why we have CentOS (and not RedHat Free), and IceCat (and not
Firefox Free). This is also covered in DFSG ("The license may require
derived works to carry a different name or version number from the
original software").
This principle has even been tested in court:
http://www.inta.org/INTABulletin/Pages/GERMANYGeneralPublicLicenseDoesNotPermitUseofThird-PartyTrademarksforAdvertisingModifiedVersionsofOpen-SourceSoftware.aspx
https://www.admody.com/urteilsdatenbank/cafe6fdaeed3/OLG-Duesseldorf_Urteil_vom_28-September-2010_Az_I-20-U-41-09
Also know that if you fork GNU Parallel and remove the notice, you are not helping to fund further develpment. So if you like GNU Parallel and want it to be maintained in the future, then this is a bad idea, as it will lead to less funding.
Also know that if you fork GNU Parallel and remove the notice, you are
not helping to fund further develpment. So if you like GNU Parallel
and do not want to see it wither away like many of the competitors,
then this is a bad idea, as it will lead to less funding.
> How important is the notice for the survival of GNU Parallel?
Citations is what indirectly funds maintaining GNU Parallel. Before the citation notice was implemented hardly anyone cited GNU Parallel, and that would not have been sustainable in the long term. Funding development aligns well with "We will give back to the free software community" and "To accelerate innovation and underpin operations".
Citations is what indirectly funds maintaining GNU Parallel. Before
the citation notice was implemented hardly anyone cited GNU Parallel,
and that would not have been sustainable in the long term. Funding
development aligns well with "We will give back to the free software
community" and "To accelerate innovation and underpin operations".
Therefore it is more important to keep the notice than to be included in different distributions. Specifically, it will be preferable to be moved from Debian main to Debian non-free over having the notice removed (and staying in main).
Therefore it is more important to keep the notice than to be included
in different distributions. Specifically, it will be preferable to be
moved from Debian main to Debian non-free over having the notice
removed (and staying in main).
In other words: It is preferable having fewer users, who all know they should cite, over having many users, who do not know they should cite.
In other words: It is preferable having fewer users, who all know they
should cite, over having many users, who do not know they should cite.
If the goal had been to get more users, then the license would have been public domain.
If the goal had been to get more users, then the license would have
been public domain.
This is because a long term survival with funding is more important than short term gains in popularity that can be achieved by being distributed as part of a distribution.
This is because a long term survival with funding is more important
than short term gains in popularity that can be achieved by being
distributed as part of a distribution.
> Is there another way I can get rid of the citation notice?
Yes. Find a way to finance future development of GNU Parallel. If you pay me a normal salary, I will be happy to remove the citation notice.
Yes. Find a way to finance future development of GNU Parallel. If you
pay me a normal salary, I will be happy to remove the citation notice.
The citation notice is about (indirect) funding - nothing else.
> I do not think it is fair having to cite
If the inconvenience of having to cite is too big for you, then you should use another tool.
If the inconvenience of having to cite is too big for you, then you
should use another tool.
If you do not want to help fund GNU Parallel, then you will not be a happy GNU Parallel user, and thus you using another tool is the best solution for all parties. Here is a list of parallelizing tools to help you find an alternative: https://www.gnu.org/software/parallel/parallel_alternatives.html
If you do not want to help fund GNU Parallel, then you will not be a
happy GNU Parallel user, and thus you using another tool is the best
solution for all parties. Here is a list of parallelizing tools to
help you find an alternative:
https://www.gnu.org/software/parallel/parallel_alternatives.html
> I do not want to run 'parallel --citation'
If the inconvenience of running 'parallel --citation' one single time after installing GNU Parallel is too big, then you do not have to do it. You only need to do that if you do not want to see the citation notice.
If the inconvenience of running 'parallel --citation' one single time
after installing GNU Parallel is too big, then you do not have to do
it. You only need to do that if you do not want to see the citation
notice.
But it really only takes 10 seconds to run.
> I do not want to see the citation notice at every run
You do not have to. Spend 10 seconds on running 'parallel --citation' and the notice is silenced. This is similar to clicking 'OK. Do not show this again' in a dialog box seen in Firefox and similar programs.
You do not have to. Spend 10 seconds on running 'parallel --citation'
and the notice is silenced. This is similar to clicking 'OK. Do not
show this again' in a dialog box seen in Firefox and similar programs.
If GNU Parallel does not save you more than 10 seconds, then you should probably not be using it anyway.
If GNU Parallel does not save you more than 10 seconds, then you
should probably not be using it anyway.
> I do not want my users to see the citation notice and I do not want to finance the development
> I do not want to help finance the development
If you care so little about GNU Parallel that you do not want to help finance development, then you should contemplate whether GNU Parallel is really the right tool for you.
If you care so little about GNU Parallel that you do not want to help
finance development, then you should contemplate whether GNU Parallel
is really the right tool for you.
It is, however, doable (e.g. by forking and changing the code). But you will be going against the wishes of the author, because you make it harder to make a living, thus you will be making it harder to justify producing more free software. If you like GNU Parallel and want to see it maintained in the future, then this is not the way to go.
It is, however, doable (e.g. by forking and changing the code). But
you will be going against the wishes of the author, because you make
it harder to make a living, thus you will be making it harder to
justify producing more free software. If you like GNU Parallel and
want to see it maintained in the future, then this is not the way to
go.
Maybe it is you Nadia Eghbal addresses in https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
Maybe it is you Nadia Eghbal addresses in
https://www.slideshare.net/NadiaEghbal/consider-the-maintainer:
"Is it alright to compromise, or even deliberately ignore, the happiness of maintainers so we that can enjoy free and open source software?"
"Is it alright to compromise, or even deliberately ignore, the
happiness of maintainers so we that can enjoy free and open source
software?"

View file

@ -1,11 +1,15 @@
Quote of the month:
GNU parallel really changed how I do a lot of data processing stuff
-- Brendan Dolan-Gavitt @moyix@twitter
It is, beyond absolutely any doubt whatsoever, the single most
important tool I use in making me a productive bioinformatician.
-- A-N-Other@reddit.com
Parallel is a life send, what an awesome piece of software.
-- Blaze9@reddit.com
Y'all need some GNU parallel in your lives
-- ChaKu @ChaiLovesChai@twitter
It's really powerful for smallish data processing scripts
-- João Veiga @jcsvveiga@twitter
@ -31,6 +35,10 @@ It's the MapReduce of our generation!
=== Used ===
Y'all need some GNU parallel in your lives
-- ChaKu @ChaiLovesChai@twitter
There are so many things to love about GNU parallel. You could honestly teach a whole parallel computing course with it and never have to leave it for a real language.
-- Aubrey Bailey @DNAvinci@twitter

131
doc/promo
View file

@ -1,5 +1,7 @@
=head1 GNU Parallel 10 year anniversery - 2020-04-22
Git log entry 2010-04-22:
"""
Author: Ole Tange <ole@tange.dk>
Date: Thu Apr 22 01:23:00 2010 +0200
@ -11,7 +13,8 @@ Date: Thu Apr 22 01:23:00 2010 +0200
Wow. It has been 10 years since my parallel program was officially
renamed GNU Parallel. It has been quite a ride.
So it is a probably a good time to take stock.
Not all software is maintained for 10 full years, so it is a probably
a good time to take stock.
=head2 The design
@ -93,13 +96,29 @@ It is still cool that it can be done at all.
A sad chapter is the attack on the funding of GNU Parallel.
You would think such an attack would come from non-free competitors, but
this attack was from packagers that packaged GNU Parallel for Debian
and SuSE.
You would think such an attack would come from non-free competitors,
but this attack was from packagers that packaged GNU Parallel. Didier
Raboud <odyx@debian.org> (Debian and by inheritance Ubuntu), Andreas
Stieger <astieger@suse.com> (SuSE) and Johannes Löthberg
<johannes@kyriasis.com> (Arch). These are all people sitting in jobs,
where they are paid to use free software, and you would think they
would understand the importance of getting paid.
GNU Parallel is funded by me having a job. It is easier to get a well
paid job that will allow for maintaining GNU Parallel if GNU Parallel
is cited, because that proves the tool is useful for serious work.
<<Check before sending
https://www.linkedin.com/in/didierraboud/
https://www.linkedin.com/in/andreas-stieger-74b68a72/
https://www.linkedin.com/in/johanneslothberg?originalSubdomain=se
Maintainer today:
Jan Engelhardt <jengelh@inai.de>
<<debian>>
<johannes@kyriasis.com>
>>
GNU Parallel is funded by me having a job. It is easier to get a paid
job that will allow for maintaining GNU Parallel if GNU Parallel is
cited, because that proves the tool is useful for serious work. This
is especially true in academia.
I saw GNU Parallel being used in scientific articles, which was great,
but without being cited, which was not ideal. So we discussed on the
@ -110,23 +129,27 @@ So it was decided to make a notice similar to a do-show-this-again box
known from e.g. Firefox. The notice could be silenced in less than 10
seconds.
Unfortunately in a misguided act of short term gain in popularity SuSE
and Debian did a disservice to free software and disabled this notice
in the version they currently distribute.
Unfortunately in a misguided act of short term gain in popularity
SuSE, Debian, and Arch did a disservice to free software and disabled
this notice in the version they currently distribute.
As GNU Parallel is free software they are allowed to fork the
software, but only if they make sure the forked version cannot be
mistaken for GNU Parallel. We have court cases showing this is the
case, but still Debian and SuSE refuse to back down, so the problem
still not resolved.
case, but still Didier Raboud <odyx@debian.org> (Debian and by
inheritance Ubuntu), Andreas Stieger <astieger@suse.com> (SUSE) and
Johannes Löthberg <johannes@kyriasis.com> (Arch) refuse to back down,
so the problem still not resolved.
If you would like to see GNU Parallel maintained in the future, please
help by raising this issue with SuSE and Debian. Their current stance
hurts free software by making it harder to justify spending time on
maintaining GNU Parallel. Not having GNU Parallel distributed by
Debian and SuSE is actually preferable to the current situation,
though, the best outcome would be if they distributed the non-modified
version.
help by raising this issue with SUSE (current maintainer: Jan
Engelhardt <jengelh@inai.de>), Debian/Ubuntu (current maintainer:
<<>>), and Arch (current maintainer: Johannes Löthberg
<johannes@kyriasis.com>). Their current stance hurts free software by
making it harder to justify spending time on maintaining GNU
Parallel. Not having GNU Parallel distributed by Debian/Ubuntu, Arch,
and SUSE is actually preferable to the current situation, though, the
best outcome would be if they distributed the non-modified version.
For users who are unwiling to spend the 10 seconds on silencing the
notice there is an easy solution: "Don't like it? Don't use it." A
@ -153,14 +176,40 @@ read a full book to be able to use GNU Parallel".
Several people noted that GNU Parallel was missing a cheat sheet. So
in 2019 a one page cheat sheet was included in the package.
=head2 Why all the options?
Instead of crappy wrapper scripts.
=head2 Why so many options?
GNU B<parallel> has a lot of options. A good part of them could be
written as wrapper scripts.
Normally it would not be in the UNIX philosophy to merge the wrapper
scripts into the tool itself. But experience showed that people could
not write these wrapper scripts without bugs.
By having them part of GNU B<parallel> the code will be tested by more
people and will in general be of better quality than code that was
just thrown together in a couple of hours.
An example of this is B<--nice>: For running local jobs the option is
not needed, you simply B<nice> everything:
nice parallel ...
But as soon as you run composed commands on remote systems,
it becomes much harder:
parallel -S .. nice bash -c "'cmd1; cmd2'"
When you combine that with other wrapper scripts (such as
B<--return>), it quickly becomes tricky to get right for all cases.
=head2 Convenience options --nice --basefile --transfer --return
--cleanup --tmux --group --compress --cat --fifo --workdir --tag
=head2 The May 1st incident
I was at a May 1st event for computer professionals where I sat at a
@ -175,7 +224,8 @@ quite intimately.
"And it is written by a Dane," he said excited.
"Oh. Are you aware that the author is sitting on my side of the table?"
"Oh. Are you aware that the author is sitting on my side of the
table?"
We were the only ones sitting at the table, but we had had a few
beers, so it took a while before it dawned to him, who I was.
@ -184,6 +234,10 @@ beers, so it took a while before it dawned to him, who I was.
=head2 Underappreciated functionality
There is some functionality I am particularly proud of, but which is
currently not in wide use.
=head3 env_parallel
When I was shown you could encode variables into a single variable and
@ -203,11 +257,11 @@ system just because you want to run jobs on a remote system?
Some of GNU Parallel functionality is inspired by other people
problems: How could this problem be solved in general?
parset is one of those. It was inpired by a user who needed the output
from different jobs to be stored in different variables. The jobs were
slow and could be run in parallel. So while the running of the jobs
were clearly a task for GNU Parallel, the storing in variables was not
so clear.
B<parset> is one of those. It was inpired by a user who needed the
output from different jobs to be stored in different variables. The
jobs were slow and could be run in parallel. So while the running of
the jobs were clearly a task for GNU Parallel, the storing in
variables was not so clear.
It was fairly easy to code something that would work if the output was
a single line with no spaces, but GNU Parallel tries hard not to set
@ -218,24 +272,24 @@ data.
=head3 --embed
Some of the functionality is inspired by other tools. --embed is one
Some of the functionality is inspired by other tools. B<--embed> is one
of those.
--embed was inspired by Lesser Parallel that in turn was inspired by
GNU Parallel. The major feature of Lesser Parallel is to be embedded
in any bash script. The developer will embed the code into his own
bash script and distribute this script.
B<--embed> was inspired by Lesser Parallel that in turn was inspired
by GNU Parallel. The major feature of Lesser Parallel is to be
embedded in any bash script. The developer will embed the code into
his own bash script and distribute this script.
So with --embed the users of the script will not have to install GNU
Parallel to run it.
So with B<--embed> the users of the script will not have to install
GNU Parallel to run it.
=head3 --pipepart with --fifo
=head3 --bar
I see people using --bar too rarely. It is one of the easiest ways to
get a visual representation of when all the jobs are expected done.
I see people using B<--bar> too rarely. It is one of the easiest ways
to get a visual representation of when all the jobs are expected done.
=head3 Combining ::: with :::+
@ -253,7 +307,7 @@ get a visual representation of when all the jobs are expected done.
Best ever
=head2 Live strong
=head2 Vitality
On average there has been a new release of GNU Parallel every month
since 2010-04-24.
@ -261,8 +315,8 @@ since 2010-04-24.
In the autumn of 2010 Henrik Sandklef teased me that he knew when the
next release would be. GNU Parallel just happened to have been
released twice in the 22nd, so he assumed the next release would also
be on the 22nd. And why not? A few releases were not in line with
this, but since 2011 there has been a release every month around the
be on the 22nd. And why not? A few releases were not in line with this
rule, but since 2011 there has been a release every month around the
22nd.
The fixed release cycle means there has been more than 100 releases
@ -283,6 +337,7 @@ Since the events are not always happy events, the names have now and
then stirred a bit of controversy. But if you want happier names, go
make a happier world :)
=head3 Competitors
Apart from xargs no competitor has had the strength to live for 10

View file

@ -5,7 +5,7 @@
Check that documentation is updated (compare to web):
git grep -E '(alpha|beta) testing' | cat
git diff last-release-commit
git diff $(date --date="last month" +%Y%m22)
Unmodified beta since last version => production
Unmodified alpha since last version => beta
Modified => alpha
@ -76,8 +76,6 @@ make alphaupload
== Update OpenSUSE build system ==
cd ~/privat/parallel/packager/obs
# Update version number
em home:tange/parallel/parallel.spec
find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc rm {}
# This should not create new files
@ -119,8 +117,9 @@ cp src/*.pdf src/*.html ../parallel-web/parallel
cp src/parallel.html ../parallel-web/parallel/man.html
pushd ../parallel-web/parallel
cvs up
cvs ci -m "New release"
# Bug at Savannah makes this take 30 seconds
torsocks cvs up
torsocks cvs ci -m "New release"
pushd
== Commit released version ==
@ -139,9 +138,9 @@ git commit -a -m "Released as $YYYYMMDD ('$TAG')"
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $YYYYMMDD
git push
git push origin $TAG
git push origin $YYYYMMDD
torsocks git push
torsocks git push origin $TAG
torsocks git push origin $YYYYMMDD
== Update documentation ==
@ -207,27 +206,68 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20190322 ('FridayforFuture') released <<[stable]>>
Subject: GNU Parallel 20190422 ('Invitation Assange') released <<[stable]>>
GNU Parallel 20190322 ('FridayforFuture') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20190422 ('Invitation') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
No new functionality was introduced so this is a good candidate for a stable release.
GNU Parallel is 10 years old in a year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
The primary reception will be held in Copenhagen, DK. Please reserve the date and email happybirthdaygnuparallel@tange.dk if you want to join.
If you cannot make it, you are encouraged to host a parallel party.
So far we hope to have parallel parties at:
+verbatim+
PROSA
Vester Farimagsgade 37A
DK-1606 København V
RSVP: happybirthdaygnuparallel@tange.dk
PROSA
Søren Frichs Vej 38 K th
DK-8230 Åbyhøj
RSVP: To be determined
PROSA
Overgade 54
DK-5000 Odense C
RSVP: To be determined
-verbatim-
If you want to host a party held in parallel (either in this or in a parallel universe), please let me know, so it can be announced.
If you have parallel ideas for how to celebrate GNU Parallel, please post on the email list parallel@gnu.org. So far we have the following ideas:
* Use GNU Parallel logo (the café wall illusion) as decoration everywhere preferably in a moving version where the bars slide. Maybe we can borrow this https://www.youtube.com/watch?v=_XFDnFLqRFE or make an animation in javascript based on https://bl.ocks.org/Fil/13177d3c911fb8943cb0013086469b87? Other illusions might be fun, too.
* Only serve beverages in parallel (2 or more), which may or may not be the same kind of beverage, and may or may not be served to the same person, and may or may not be served by multiple waiters in parallel
* Let people drink in parallel with straws (2 or more straws)
* Serve popcorn as snack (funny because cores and kernels are the same word in Danish, and GNU Parallel keeps cores hot)
* Serve saltstænger and similar parallel snacks.
* Serve (snack friendly) cereal in parallel bowls.
* Live parallel streaming from parallel parties
* Play songs in parallel that use the same 4 chords: https://www.youtube.com/watch?v=5pidokakU4I
* Play songs named parallel, serial, mutex, race condition and similar
* Have RC racing cars to demonstrate race condition
* Put a counting semaphore on the toilets
* Only let people leave one at a time to simulate serialized output UNLESS they swap some clothing (to simulate half line mixing)
If you have interesting stories about or uses of GNU Parallel, please post them, so can be part of the anniversary update.
The change in signalling makes this release experimental for users that send SIGTERM to GNU Parallel.
Quote of the month:
There are so many things to love about GNU parallel. You could honestly teach a whole parallel computing course with it and never have to leave it for a real language.
-- Aubrey Bailey @DNAvinci@twitter
Y'all need some GNU parallel in your lives
-- ChaKu @ChaiLovesChai@twitter
New in this release:
* GNU Parallel now includes a cheat sheet: parallel_cheat.pdf
* Invitation to the 10 years anniversary next year.
* High Throughput Computing on RMACC Summit and Beyond https://calendar.colorado.edu/event/high_throughput_computing_on_rmacc_summit_and_beyond#.XH2NBhB7mV4
* GNU Parallel Cheat Sheet by cpriest https://www.cheatography.com/cpriest/cheat-sheets/gnu-parallel/
* Use Multiple CPU Cores(Parallelize) with Single Threaded Linux Commands http://xensoft.com/use-multiple-cpu-cores-parallelize-with-single-threaded-linux-commands/
* The Austin Linux Meetup: KVM as Hypervisor and GNU Parallel https://www.meetup.com/linuxaustin/events/jbxcnqyzgbpb/
* Bug fixes and man page updates.

View file

@ -3,6 +3,8 @@ all:
osc rm home\:tange/parallel/parallel_*.dsc || true
cp ../debian/parallel_*.dsc ../debian/parallel_*.tar.gz home\:tange/parallel/
cp `ls ../../parallel-2*.tar.bz2|grep -v latest|tail -n1` home\:tange/parallel/
cd home\:tange/parallel/ && osc up
perl -i -pe '/Version:/ and s/20\d\d\d\d\d\d/$$ENV{YYYYMMDD}/g' home:tange/parallel/parallel.spec
cd home\:tange/parallel/ && osc diff
cd home\:tange/parallel/ && osc up
cd home\:tange/parallel/ && parallel osc add ::: *.spec *.dsc *.tar.gz *.tar.bz2 && echo Src added OK || true
cd home\:tange/parallel/ && osc ci -m "New release"

View file

@ -1,6 +1,6 @@
<directory name="parallel" rev="235" srcmd5="b56edf537125f4d80264c18ceb6f0a1d" vrev="3">
<entry md5="bb69a30ebf19d93dda7b349d3ec6f09a" mtime="1553206993" name="parallel-20190322.tar.bz2" size="2010002" />
<entry md5="f1e16853c46c9fdd844562fbaf845aa4" mtime="1553206994" name="parallel.spec" size="4738" />
<entry md5="38056b999a4b5c6b32dc85be7359e4da" mtime="1553206501" name="parallel_20190322.dsc" size="556" />
<entry md5="f787b5e843add718eafeb06163e7e496" mtime="1553206502" name="parallel_20190322.tar.gz" size="2193783" />
<directory name="parallel" rev="236" srcmd5="97d7526f816fcbd46f75c23d892a29f7" vrev="1">
<entry md5="d355fb70b3d78985968e14d824b87246" mtime="1555853627" name="parallel-20190422.tar.bz2" size="2011149" />
<entry md5="d290340df54c5f9a287819ca61a98406" mtime="1555853628" name="parallel.spec" size="4738" />
<entry md5="c513f6d69180cd4d02573d4679cae74f" mtime="1555853628" name="parallel_20190422.dsc" size="556" />
<entry md5="81678d2cc4c52387226826453217ca63" mtime="1555853628" name="parallel_20190422.tar.gz" size="2192091" />
</directory>

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190322
Version: 20190422
Release: 1.2
License: GPL
Group: Productivity/File utilities

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20190322
Version: 20190422
Release: 1.2
License: GPL
Group: Productivity/File utilities

View file

@ -23,7 +23,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20190322;
$Global::version = 20190422;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -27,7 +27,7 @@ years.
The following features are in some of the comparable tools:
Inputs
B<Inputs>
I1. Arguments can be read from stdin
I2. Arguments can be read from a file
I3. Arguments can be read from multiple files
@ -36,7 +36,7 @@ Inputs
I6. Arguments can be read from the same file using #! (shebang)
I7. Line oriented input as default (Quoting of special chars not needed)
Manipulation of input
B<Manipulation of input>
M1. Composed command
M2. Multiple arguments can fill up an execution line
M3. Arguments can be put anywhere in the execution line
@ -44,15 +44,18 @@ Manipulation of input
M5. Arguments can be replaced with context
M6. Input can be treated as the complete command line
Outputs
B<Outputs>
O1. Grouping output so output from different jobs do not mix
O2. Send stderr (standard error) to stderr (standard error)
O3. Send stdout (standard output) to stdout (standard output)
O4. Order of output can be same as order of input
O5. Stdout only contains stdout (standard output) from the command
O6. Stderr only contains stderr (standard error) from the command
O7. Buffering on disk
O8. Cleanup of file if killed
O9. Test if disk runs full during run
Execution
B<Execution>
E1. Running jobs in parallel
E2. List running jobs
E3. Finish running jobs, but do not start new jobs
@ -60,7 +63,7 @@ Execution
E5. Finish running jobs, but do not start new jobs after first failure
E6. Number of running jobs can be adjusted while running
Remote execution
B<Remote execution>
R1. Jobs can be run on remote computers
R2. Basefiles can be transferred
R3. Argument files can be transferred
@ -71,11 +74,11 @@ Remote execution
R8. Configurable SSH command
R9. Retry if connection breaks occasionally
Semaphore
B<Semaphore>
S1. Possibility to work as a mutex
S2. Possibility to work as a counting semaphore
Legend
B<Legend>
- = no
x = not applicable
ID = yes
@ -87,7 +90,7 @@ BUGS).
parallel:
I1 I2 I3 I4 I5 I6 I7
M1 M2 M3 M4 M5 M6
O1 O2 O3 O4 O5 O6
O1 O2 O3 O4 O5 O6 O7 O8 O9
E1 E2 E3 E4 E5 E6
R1 R2 R3 R4 R5 R6 R7 R8 R9
S1 S2
@ -1569,9 +1572,10 @@ emulated with GNU B<parallel>:
$ loop 'touch $COUNT.txt' --count-by 5
$ loopy touch '{= $_=seq()*5 =}'.txt
$ loop --until-contains 200 -- ./get_response_code.sh --site mysite.biz`
$ loopy --halt now,success=1 './get_response_code.sh --site mysite.biz |
match 200'
$ loop --until-contains 200 -- \
./get_response_code.sh --site mysite.biz`
$ loopy --halt now,success=1 \
'./get_response_code.sh --site mysite.biz | match 200'
$ loop './poke_server' --for-duration 8h
$ time_out 8h loopy ./poke_server
@ -2137,7 +2141,8 @@ corresponding GNU B<sem> and GNU B<parallel> commands:
3$ for i in $(seq 1 100); do
3$ lateral run -- command_still_outputs_but_wont_spam inputfile$i
3$ done
3$ lateral config -p 10; lateral wait # command output spam can commence
3$ # command output spam can commence
3$ lateral config -p 10; lateral wait
3$
3$ for i in $(seq 1 100); do
3$ echo "command inputfile$i" >> joblist

View file

@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20190322;
$Global::version = 20190422;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -161,7 +161,8 @@ par_k() {
parallel -j1 -kq echo "sleep 1; echo {}";
echo "echo end") |
stdout nice parallel -k -j0 |
grep -Ev 'No more file handles.|Raising ulimit -n'
grep -Ev 'No more file handles.|Raising ulimit -n' |
perl -pe '/parallel:/ and s/\d/X/g'
}
par_k_linebuffer() {

View file

@ -466,7 +466,7 @@ cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
";
# Core i7 Acer laptop
# Core i7-3632QM Acer laptop
cpuinfo2="
processor : 0
vendor_id : GenuineIntel
@ -684,7 +684,7 @@ cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
";
# Core i5 laptop firewall
# Core i5-2410M laptop firewall
cpuinfo3="
processor : 0
vendor_id : GenuineIntel
@ -2221,13 +2221,13 @@ CPU revision : 4
";
test_one() {
export PARALLEL_CPUINFO="$1"
echo $(ppar --number-of-sockets) \
$(ppar --number-of-cores) \
$(ppar --number-of-threads) \
$(ppar --number-of-cpus)
echo $(parallel --number-of-sockets) \
$(parallel --number-of-cores) \
$(parallel --number-of-threads) \
$(parallel --number-of-cpus)
}
export -f test_one
ppar -j0 -0 -k --tagstring {2} test_one {1} \
parallel -j0 -0 -k --tagstring {2} test_one {1} \
::: "$cpuinfo1" "$cpuinfo2" "$cpuinfo3" "$cpuinfo4" "$cpuinfo5" "$cpuinfo6" "$cpuinfo7" \
:::+ "2-8-8-8" "1-4-8-4" "1-2-4-2" "1-2-2-2" "2-24-48-24" "1-2-2-2" "1-8-8-8"
}

View file

@ -6,8 +6,9 @@ unset TIMEOUT
env_parallel --session
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2"
# Skip irix until Perl is upgraded
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix hurd beaglebone cubieboard2"
# Skip ultrix
# Skip irix until Perl is upgraded (I cannot due to too small disk quota)
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax minix hurd beaglebone cubieboard2"
P="$P_ALL"
# tru64 takes 22s to run 4 parallels

View file

@ -27,8 +27,8 @@ par_interactive sleep 0.1; echo opt-p 2 ?...n
par_interactive sleep 0.1; echo opt-p 3 ?...y
par_interactive spawn /tmp/parallel-script-for-expect
par_k ### Test -k
par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or
par_k parallel: Warning: Only enough file handles to run X jobs in parallel.
par_k parallel: Warning: Running 'parallel -jX -N X --pipe parallel -jX' or
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
par_k begin

View file

@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
echo '### --version must have higher priority than retired options'
### --version must have higher priority than retired options
$NICEPAR --version -g -Y -U -W -T | tail
GNU parallel 20190223
GNU parallel 20190422
Copyright (C) 2007-2019 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.

View file

@ -1,4 +1,4 @@
MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
MAXTIME=50 RETRIES=3 MAXPROC=100 MAXINNERPROC=3
### Filter out working servers
1d0
< openstep
@ -6,10 +6,10 @@ MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
< alpha
7d4
< syllable
28,31d24
28,29d24
< dragonfly
< vax
< ultrix
31,34d25
< minix
33,34d25
< beaglebone
@ -618,6 +618,16 @@ unixware UX:sh (/bin/sh): ERROR: source: Not found
### Does exporting a bash function make parallel fail?
If login shell is not bash compatible it fails
cat <(echo bash only A)
cat <(echo bash only A)
bin/parallel funcA ::: 1
bin/parallel funcA ::: 1
export -f funcA;
export -f funcA;
funcA() {
funcA() {
}
}
aix bash only A
aix test funcA
centos bash only A

View file

@ -1205,7 +1205,7 @@ parallel: Error: echo is not a valid DBURL
cat num1000000 | parallel --pipe --block 2M wc
999999 999999 9999999
85349 85349 597444
cat num1000000 | parallel --pipe -j4 --round-robin wc
cat num1000000 | parallel --pipe -j4 --roundrobin wc
999999 999999 9999999
cat num1000000 | parallel --pipe -N140000 wc
140000 140000 868895
@ -1418,6 +1418,7 @@ The second finished running in the foreground
First started
First done
sem --id my_id -u 'echo Second started; sleep 10; echo Second done'
Second done
sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' &&
sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' &&
sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' &&
@ -1438,8 +1439,8 @@ Start 4
Slow started
Forced running after 1 sec
Slow ended
Give up after 2 secs
parallel: Warning: Semaphore timed out. Stealing the semaphore.
parallel: Warning: Semaphore timed out. Exiting.
parallel --help
Usage:
@ -1515,7 +1516,9 @@ This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
More about funding GNU Parallel and the citation notice:
https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html
https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
https://git.savannah.gnu.org/cgit/parallel.git/tree/doc/citation-notice-faq.txt
If you send a copy of your published article to tange@gnu.org, it will be
mentioned in the release notes of next version of GNU Parallel.