Dimitri John Ledkov: Ubuntu Livepatch service now supports over 60 different kernels
![]() |
Linux kernel getting a livepatch whilst running a marathon. Generated with AI. |
![]() |
Linux kernel getting a livepatch whilst running a marathon. Generated with AI. |
classproperty
helper has been moved to django.utils.functional
in newer versions of Django. [...]
INSTALLED_APPS
during model setup. [...]
.d
-style directories containing Javascript and CSS to drop unquote
usage from the six
compatibility library. [...]
2.86.0
, 2.87.0
, 2.88.0
, 2.89.0
, 2.90.0
, 2.91.0
and 2.92.0
, as well as made the following changes:
patch-not-forwarded-upstream
tag for README
files under debian/patches
. (#968845)no-dh-sequencer
tag due to indirect target dependences. (#968108)package-uses-old-debhelper-compat-version
tag. [...]lintian
salsa namespace. [...]lzip
dependency in a previous debian/changelog
entry. (#966817)generate-tag-summary
release script to reflect change of tag definition filename extension change from .desc
.tag
. [...]spelling-error-in-rules-requires-root
tag's severity; this is not a "spelling" check in the sense that it does not use our dictionary. [...]$skip_tag
argument in the extract_service_file_values
routine. [...]debian-installer
component to allow all arguments from sources.list
files (such as [check-valid-until=no]
) in order that we can test the reproducibility of the installer images on the Reproducible Builds own testing infrastructure and sent a gentle ping to the team that maintains that code.
.buildinfo
files within .deb
archives [...].
muroar
package that was discovered while doing reproducibility testing. (#968189)
tests.reproducible-builds.org
. This month, I updated the self-serve package rescheduler to use HTML <pre>
tags when dumping any debugging data. [...]
SOURCE_DATE_EPOCH
age. [...]155
, 156
, 157
and 158
to Debian:
<!ENTITY>
declarations inside the Document Type Definition (DTD), or when a DTD or entity references an external resource. (#212)pgpdump(1)
can successfully parse some binary files, so check that the parsed output contains something sensible before accepting it. [...]gnumeric
from the Debian build-dependies as it has been removed from the testing distribution. (#968742)fallback_recognises
to prevent matching .xsb
binary XML files.file(1)
returns "data
". (#211)ppudump
version does not match our file header. [...]repr(object)
output in "Calling external command" messages. [...]chrony
[...], golang-1.8
[...], golang-go.crypto
[...], golang-golang-x-net-dev
[...], icingaweb2
[...], lua5.3
[...], mongodb
[...], net-snmp
, php7.0
[...], qt4-x11
, qtbase-opensource-src
, ruby-actionpack-page-caching
[...], ruby-doorkeeper
[...], ruby-json-jwt
[...], ruby-kaminari
[...], ruby-kaminari
[...], ruby-rack-cors
[...], shiro
[...] & squirrelmail
.
qtbase-opensource-src
and ELA-261-1 for qt4-x11
, two components of cross-platform C++ application framework. A specially-crafted XBM image file could have caused a buffer overread.
squirrelmail
webmail client.
zabbix
, the PHP-based monitoring system to fix a potential cross-site scripting vulnerability via <iframe>
HTML elements.
ruby-websocket-extensions
, a library for managing long-lived HTTP 'WebSocket' connections.
1.6.6-2
Enable TLS capabilities by default. (#968603)1.6.6-3
Add libio-socket-ssl-perl
to test TLS support and perform a general package refresh.2.2.15-1
(unstable) New upstream bugfix release3.1-1
(experimental) New upstream release.2.2.15-2
(unstable) & 3.1-2
(experimental) Set the same PYTHONPATH
when executing the runtime tests as we do in the package build. (#968577)2.0.0-43
Refresh packaging, and upload some changes from the Debian Janitor.2.0.0-44
Fix compatibility with GCC 10, restoring the missing /usr/bin/instant
binary. (#968900)1.0.0-1
) New upstream release to experimental.
codecode/x86_64.py
reproducible (#108).Message-Id
header. [...]
mk-build-deps
. [...][...]
.changes
file. [...]
sensible-utils
utilities such as i3-sensible-pager
. (#966022)
send-patch
tag to patch-not-forwarded-upstream
. [...]
codecode/x86_64.py
reproducible (#108).
dolfinx
was running its test suite even when the nocheck
build profile was set. (#965946)
150
, 151
, 152
, 153
& 154
to Debian:
zipnote(1)
to determine differences in a .zip
file as we can use libarchive
. [...]--profile
as a synonym for --profile=-
, ie. write profiling data to standard output. [...]strings(1)
to eight characters to avoid unnecessary diff noise. [...]--exclude-directory-metadata
and --no-exclude-directory-metadata
have been replaced with --exclude-directory-metadata= yes,no
. [...]xxd(1)
and show bytes in groups of 4. [...]javap not found in path
if it is available in the path but it did not result in an actual difference. [...]... not available in path
messages when looking for Java decompilers that used the Python class name instead of the command. [...]--debug
log noise by truncating the has_some_content
messages. [...]compare_files
log message when the file does not have a literal name. [...]exit_if_paths_do_not_exist
to not check files multiple times. [...][...]add_comment
helper method; don't mess with our internal list directly. [...]str.format
with Python 'f-strings' [...] and make it easier to navigate to the main.py
entry point [...].None
in the failure case as we return a non-None
value in the success one. [...]NullChanges
quasi-file to represent missing data in the Debian package comparator [...] and clarify use of a 'null' diff in order to remember an exit code. [...]6.0.6-1
) New upstream release.
2.2.14-1
New upstream bugfix release.3.1~rc1-1
New upstream release candidate.lastpass-cli
(1.3.3-4
) Fix a build failure under GCC 10. (#957416)
atril
, ceph
, cimg
, ffmpeg
, golang-github-seccomp-libseccomp-golang
, gosa
, http-parser
, jruby
, json-c
, jupyter-notebook
, keystone
, ksh
, libjpeg-turbo
, libopenmpt
, libpam-radius-auth
, log4net
, mailman
, milkytracker
, mupdf
, pillow
, poppler
, puma
, python-rtslib-fb
, roundcube
, ruby-zip
, salt
, slirp
, sqlite3
, transmission
& wordpress
.
shiro
, first to fix a path-traversal issue where a specially-crafted request could cause an authentication bypass (CVE-2020-1957) and then to fix an encoding issue introduced in the handling of the previous CVE-2020-1957 path-traversal issue which itself could have also caused an authentication bypass (CVE-2020-11989).
gpgme_op_verify_result
was not being checked.
kdepim-runtime
would default to using unencrypted POP3 communication despite the user interface indicating that encryption was in use.
logging
handler. (#115)
breakout-link
for architecture-independent .jar
files under /usr/lib
. (#963939)override_dh_
in the long description of the excessive-debhelper-overrides
tag. [...]data/fields/perl-provides
for Perl 5.030003. [...]execute_after
and execute_before
spelling mistakes just like override_*
. [...]octave-queueing
package in the handling of absolute paths in Texinfo files. (#962187)
147
, 148
and 149
to Debian:
/Info
stanza). (#150)File.recognizes
that checks candidates against file(1)
. [...]subprocess.check_output
by using a wrapper. (#151)AbstractMissingType
type instead of remembering to check for both types of "missing" files. [...].changes
, .dsc
and .buildinfo
comparators. [...]f-strings
to tidy up code [...][...] and remove explicit u"unicode"
strings [...].cmark
: Please update the homepage URI. (#962576)petitboot
: Please update Vcs-Git
urls. (#963123)python-pauvre
: FTBFS if the DISPLAY
environment variable is exported. (#962698)angular.js
[...],icinga2
[...], intel-microcode
[...], jquery
[...], pdns-recursor
[...], unbound
[...] & wordpress
[...].
1.10.7-2+deb9u9
) and buster (1.11.29-1~deb10u1
). (More info)
6.0.4-1
& 6.0.5-1
) New upstream releases.
2.2.13-1
New upstream security release followed by a fix for an upstream regression 2.2.13-2
3.0.7-1
New upstream security release followed by a fix for an upstream regression in 3.0.7-2
3.1~beta1-1
New upstream beta release.You'll probably need a newer version of pyusb:
$ git clone git://github.com/walac/pyusbThere is no need to install it systemwide - you can simply leave it checked out somewhere.
Get the Garmin-Forerunner-610-Extractor project from GitHub:
$ git clone git://github.com/Tigge/Garmin-Forerunner-610-Extractor.git
Turn your watch on and plug in the USB adaptor.
You can now sync your activities:
$ sudo env PYTHONPATH=/path/to/pyusb ./garmin.py Request basic information... ANT version: AJK1.04RAF Capabilities: array('B', [8, 3, 0, 186, 54, 0]) Serial number: 3480039 Starting system... Searching... Authenticating with Forerunner 910XT (3863343203) - Passkey: OK Downloading 1 file(s) Downloading 2013-09-03_21-09-32-80-19364.fit [..........]The first time you sync, you will have to authenticate on the watch itself. Downloading the activities will be much slower than you expect.
After the syncing has finished, don't forget to turn the watch off. If you are used to the Garmin Edge 800 (which turns itself off when you insert the USB cable) you will probably not have the habit of turning off the unit.
Rather confusingly, your .FIT files are available in the Xdg configuration folder. For example:
ls -l ~/.config/garmin-extractor/3863343203/activities/ -rw-r--r-- 1 root root 2688 Jun 9 15:23 2013-06-08_12-33-24-80-2688.fit -rw-r--r-- 1 root root 1171 Jun 9 15:23 2013-06-08_12-37-14-80-1171.fit -rw-r--r-- 1 root root 6111 Jun 9 15:23 2013-06-08_22-19-28-80-6111.fit -rw-r--r-- 1 root root 170327 Jun 9 15:26 2013-06-09_11-09-44-80-170327.fit
Strava supports these .fit files through the From File upload option.
You'll probably need a newer version of pyusb:
$ git clone git://github.com/walac/pyusbThere is no need to install it systemwide - you can simply leave it checked out somewhere.
Get the Garmin-Forerunner-610-Extractor project from GitHub:
$ git clone git://github.com/Tigge/Garmin-Forerunner-610-Extractor.git
Turn your watch on and plug in the USB adaptor.
You can now sync your activities:
$ sudo env PYTHONPATH=/path/to/pyusb ./garmin.py Request basic information... ANT version: AJK1.04RAF Capabilities: array('B', [8, 3, 0, 186, 54, 0]) Serial number: 3480039 Starting system... Searching... Authenticating with Forerunner 910XT (3863343203) - Passkey: OK Downloading 1 file(s) Downloading 2013-09-03_21-09-32-80-19364.fit [..........]The first time you sync, you will have to authenticate on the watch itself. Downloading the activities will be much slower than you expect.
After the syncing has finished, don't forget to turn the watch off. If you are used to the Garmin Edge 800 (which turns itself off when you insert the USB cable) you will probably not have the habit of turning off the unit.
Rather confusingly, your .FIT files are available in the Xdg configuration folder. For example:
ls -l ~/.config/garmin-extractor/3863343203/activities/ -rw-r--r-- 1 root root 2688 Jun 9 15:23 2013-06-08_12-33-24-80-2688.fit -rw-r--r-- 1 root root 1171 Jun 9 15:23 2013-06-08_12-37-14-80-1171.fit -rw-r--r-- 1 root root 6111 Jun 9 15:23 2013-06-08_22-19-28-80-6111.fit -rw-r--r-- 1 root root 170327 Jun 9 15:26 2013-06-09_11-09-44-80-170327.fit
Strava supports these .fit files through the From File upload option.
Antti-Juhani Kaijanaho is no longer actively working on Wikipedia. While I approve, in principle, all the new and stricted editor policies, it is emotionally very demanding to be challenged under new policies for edits that were made in good faith under older policies. There just aren’t enough positive aspects to doing Wikipedia to offset that very big negative aspect.Some of the challenges toward my edits have happened in the English Wikipedia, and some in the Finnish Wikipedia. I have felt like this for about a year now – it’s probably time to make it official. I may make minor edits, or write in talk pages occasionally, but any substantial edits I won’t bother with any more.
Well, and I’m open to all those things. If you live in California, you’ve got to be open; if you’re not they pry you open.I’m not sure whether I really agree with Twitter–it reminds me of this interesting collection of postmodern thoughts from n+1 magazine:
The Decivilizing Process As the specific addressee of any set of remarks becomes less important, in the midst of more and more babble, it will become more and more difficult to remember the special status of listening human beings, in the confusion of shouted orders.But, hey, it’s worth a try.
91 | D63469DF | dnusinow | 1243 |
63 | DEB0EC31 | eloy | |
55 | A965818F | vela | 1243 |
46 | 58510B5A | myon | 2143 |
39 | 9B7C328D | luk | 31-2 |
39 | 1880283C | anibal | 2134 |
37 | 0FE53DD9 | opal | 4213 |
32 | 2B0920C0 | lool | 1342 |
29 | 788A3F4C | joeyh | |
27 | 0F932C9C | doko | |
25 | 8768B1D2 | sjoerd | |
23 | F1BCDB73 | aurel32 | 13-2 |
19 | E02FEF11 | jordens | 1243 |
18 | AB963370 | schizo | 1243 |
18 | 6E74A7D1 | jdassen(Ks) | 1243 |
18 | 68FD549F | tbm | 3142 |
18 | 6783ED5E | fpeters | 1--2 |
17 | 91B0D3B7 | edd | -213 |
16 | E07F1CF9 | rousseau | 321- |
16 | 248AEB73 | rene | 1243 |
15 | 8E635A5E | rafl | |
14 | C0143D2D | bubulle | 4123 |
13 | D87C6781 | krooger(P) | 4213 |
13 | A436AD25 | jfs(P) | |
13 | 3D08B612 | msp | |
13 | 1E880A84 | fjp | 4213 |
13 | 0F7A8D01 | nobse | |
12 | F1968D1B | decklin | 1234 |
12 | E7075A54 | mhatta | |
12 | D75F8533 | joss | 1342 |
12 | BF24424C | srivasta | 1342 |
12 | B8C1FA69 | sto | |
12 | 7F961564 | kobold | |
12 | 2A30D729 | pere | 4213 |
12 | 16D970C6 | eric | 12-- |
11 | 5E0577F2 | mpitt | |
11 | 307D56ED | noel | 3241 |
11 | 2BE16D01 | moray | 1342 |
10 | BC7D020A | formorer | -1-- |
10 | A7D91602 | apollock | 4213 |
10 | A51A4FDD | gcs | |
10 | 917A225E | jordi | |
10 | 4B729625 | pvaneynd | 3123 |
10 | 497A176D | loic | |
9 | 62F1A57F | pa3aba | |
9 | 54FD2A58 | glandium | 1342 |
9 | 4A5D72FE | rafael | |
9 | 13FEFC40 | fenio | -1-- |
9 | 0AFC7476 | rra | 1243 |
8 | 90267086 | duck | 31-2 |
8 | 86A118E6 | ch | 321- |
8 | 801EA932 | joey | 1243 |
8 | 7F4E0E11 | waldi | -123 |
8 | 514B3E7C | florian | 21-- |
8 | 41954920 | fs | 12-- |
8 | 2A385C57 | mckinstry | 21-3 |
8 | 25BFB848 | rleigh | 1243 |
7 | BC70A6FF | pape | 1--- |
7 | B70E403B | ari | 1243 |
7 | 8E2D213A | jochen(Ks) | |
7 | 85FEC17F | kilian | |
7 | 84FB46D6 | lwall | 1342 |
7 | 800969EF | smimram | -1-- |
7 | 79CC6586 | haas | |
7 | 5BFA90EC | kohda | |
7 | 52B7487E | sesse | 2341 |
7 | 29499F61 | sho | 1342 |
7 | 1E161AFB | barbier | 12-- |
6 | FC05DA69 | wildfire(P) | |
6 | EEB6B4C2 | avdyk | -12- |
6 | EDF008C5 | blade | 1243 |
6 | E25F2102 | mejo | 1342 |
6 | D1C41882 | adeodato(Ks) | 3142 |
6 | D0B433DF | ross | 12-3 |
6 | B0EBC777 | piman | 1233 |
6 | 9D309C3B | robert | 4213 |
6 | 882A6C4B | kov | |
6 | 6BBA3C84 | zugschlus | 4213 |
6 | 5662C734 | mvo | |
6 | 554FB4C6 | petere | -1-2 |
6 | 37155778 | stratus | |
6 | 2D9ACC8E | lars | 1243 |
6 | 2809E61A | josem | |
6 | 2252FA1A | frank | 2143 |
6 | 1CF2D62A | micah | |
6 | 10FA4CD1 | cjwatson | 2143 |
5 | EE6DC66A | jaldhar | 2143 |
5 | EA59038E | sgran | 4123 |
5 | E1EE3FB1 | md | 4312 |
5 | E0B8B2DE | jaybonci | |
5 | C9A5B54E | sesse(Ps | ,Gs) 2341 |
5 | C4CF8EC3 | twerner | |
5 | C2FEE5CD | acid | 213- |
5 | C09FD35A | tille | |
5 | C03C56DF | rfrancoise | ---1 |
5 | B7CDA2DC | xam | 213- |
5 | A20EBC50 | cavok | 4214 |
5 | 808D0FD0 | don | 1342 |
5 | 797EBFAB | enrico | 1243 |
5 | 5230514A | sjackman | |
5 | 49A5F855 | otavio | -123 |
5 | 3DC29B41 | pdm | |
5 | 29982E5A | vorlon | 1243 |
5 | 2763483B | mkoch | 213- |
5 | 21DB31C5 | smr | 2143 |
5 | 1BF8DE0F | stigge | 312- |
5 | 12CADFA5 | csmall | 3214 |
5 | 0A0AC927 | lamont | |
4 | F2CF01A8 | bdale | |
4 | F095E5E4 | mnencia | |
4 | E9F2C747 | frankie | |
4 | E9ABFCD2 | devin | 2143 |
4 | E81E55C1 | dancer | 2143 |
4 | E38E7ACF | hmh(Gs) | 1243 |
4 | E298966D | jrv(P) | |
4 | DF5CE2B4 | huggie | 12-3 |
4 | DD982A75 | speedblue | |
4 | C671257D | damog | -1-2 |
4 | C4A3823E | kmr | 4213 |
4 | C0B10A5B | dexter | |
4 | C02440B8 | js | 1342 |
4 | BE9F70EA | tb | 1342 |
4 | B7D2F063 | varenet | -213 |
4 | A3F9E30E | schultmc | 1243 |
4 | A3D7B9BC | lawrencc | 2143 |
4 | A1EE761C | madcoder | 21-- |
4 | 9DE1EEB1 | he | 3142 |
4 | 9D928C9B | guillem | 1--- |
4 | 9B726B71 | racke | |
4 | 90788E11 | jsogo | 2143 |
4 | 864826C3 | gotom | 4321 |
4 | 7244970B | kroeckx | 2143 |
4 | 5B48FFAE | marga | 2143 |
4 | 54E672DE | isaac | 1243 |
4 | 4B3A135C | erich | 1243 |
4 | 4597A593 | agmartin | 4213 |
4 | 3FCC2A90 | amaya | 1243 |
4 | 3F3E6426 | agx | -1-2 |
4 | 3EF23CD6 | sanvila | 1342 |
4 | 32C9C8BD | werner(K) | |
4 | 204DDF1B | aquette | |
4 | 00D8CD16 | tolimar | 12-- |
3 | FEC23FB2 | bap | 34-1 |
3 | F972BE03 | tmancill | 4213 |
3 | F801A743 | nduboc | 1--- |
3 | EBEDB32B | chrsmrtn | 4123 |
3 | EA291785 | taggart | 2314 |
3 | E4D47EC1 | tv(P) | |
3 | E19F188E | troyh | 1244 |
3 | DF6807BE | srk | 4213 |
3 | D2A913A1 | psg(P) | |
3 | D097A261 | chrisb | |
3 | C6CEA0C9 | adconrad | 1243 |
3 | C20DF273 | ondrej | |
3 | B5444815 | ballombe | 1342 |
3 | B1DF9A57 | cate | 2143 |
3 | AFA44BDD | weasel(Ps | ,Gs) 1342 |
3 | AA6541EE | brlink | 1442 |
3 | A824B93F | asac | 3144 |
3 | A71C1E00 | turbo | |
3 | A2D7D292 | seb128 | |
3 | 9ED101BF | mbanck | 3132 |
3 | 969457F0 | joostvb | 2143 |
3 | 89BF7E2B | kobras | 1--2 |
3 | 86946D69 | mooch | 12-3 |
3 | 74886B63 | nathans | |
3 | 6F222F1F | edelhard | |
3 | 6D67F790 | foka | |
3 | 60B6B958 | geiger | |
3 | 607559E6 | mako | |
3 | 5C33C1B8 | dirson | |
3 | 5921B5D8 | ajmitch | |
3 | 4C1A5BE5 | sjq | |
3 | 431B38BA | pxt | 312- |
3 | 3E7B4B73 | lmamane | 2143 |
3 | 27572C47 | ucko | 1342 |
3 | 20021490 | schepler | 1342 |
3 | 1DEB8EAE | goedson | |
3 | 1BF2305A | krala(Gs) | 3142 |
3 | 19A42D19 | dannf | 21-4 |
3 | 174FEE35 | wookey | 3124 |
3 | 124B26F3 | mfurr | 21-3 |
3 | 0A327652 | tschmidt | 312- |
3 | 090DD8D5 | ingo | 3123 |
3 | 0813569F | jeroen | 1141 |
3 | 0644FAB7 | bas | 1332 |
3 | 0123F2F2 | gareuselesinge | 1243 |
3 | 00530C24 | bam | 1234 |
2 | FD6645AB | rmurray | -1-2 |
2 | F95C2F6D | chrism(P) | |
2 | F9138496 | graham(Gs) | 3142 |
2 | F5D65169 | jblache | 1332 |
2 | F28CD102 | absurd | |
2 | F2597E04 | samu | |
2 | F0B27113 | patrick | |
2 | EFA6B9D5 | hamish(P) | 3142 |
2 | EE0A35C7 | risko | 4213 |
2 | E91CD250 | daigo | |
2 | D688E0A7 | qjb | -21- |
2 | D4BE1450 | prudhomm | |
2 | D2A6B810 | joussen | |
2 | CFD42F26 | dilinger | |
2 | CEE44978 | dburrows | 1243 |
2 | CD4C0D9D | skx | 4213 |
2 | BFB880A3 | zeevon | |
2 | BD8B050D | roland | 3214 |
2 | B74952A9 | alee | |
2 | B4D6DE13 | paul | |
2 | B345BDD3 | neilm | 1243 |
2 | B28C5995 | bod | 4213 |
2 | B0FA4F49 | schoepf | |
2 | B0DDAF42 | awoodland | |
2 | A8061F32 | osamu | 4213 |
2 | A21AD4F9 | tviehmann | 1342 |
2 | 99E81DA0 | kaplan | |
2 | 964199E2 | fabbe | 3142 |
2 | 8DBFEC2F | pelle | |
2 | 8B8D7663 | ametzler | 1342 |
2 | 8B143975 | martignlo | |
2 | 88C7C1F7 | 93sam | 2134 |
2 | 83E5110F | ovek | |
2 | 817A996A | tfheen | |
2 | 807CAC25 | abi | 4123 |
2 | 798DD95C | piefel | |
2 | 78D621B4 | uwe | -1-- |
2 | 6FF0ABF2 | rcw | 2143 |
2 | 6E8169D2 | hertzog | 3124 |
2 | 6C0084FC | chrisvdb | |
2 | 6B79D401 | filippo | -1-- |
2 | 67756F5D | frn | 2341 |
2 | 5E2EB5B4 | nveber | 123- |
2 | 5C6153AD | broonie | 1243 |
2 | 5B713DF0 | djpig | 1243 |
2 | 50ECFB98 | ccontavalli(Gs) | |
2 | 50064181 | paulvt | |
2 | 4F71955A | dajobe | 21-3 |
2 | 4E2ECA5A | jmm | 4213 |
2 | 496A1827 | srittau | |
2 | 3E8DCCC0 | maxx | 1342 |
2 | 3D97C149 | mstone(P) | 2143 |
2 | 2DB65596 | dz | 321- |
2 | 29F19BD1 | meskes | |
2 | 1F41B907 | marillat | 1--- |
2 | 1EB2DE66 | boll | |
2 | 1557BC10 | kraai | 1342 |
2 | 144843F5 | lolando | 1243 |
2 | 10656584 | voc | |
2 | 0D7CA701 | steinm | |
2 | 05410E97 | horms | |
1 | FC992520 | tpo | -14- |
1 | FB0DFE9B | gildor | |
1 | FAEEB4A9 | neil | 1342 |
1 | F7E8BC63 | cedric | 21-- |
1 | F2C423BC | zack | 1332 |
1 | F0199162 | kreckel | 4214 |
1 | ECA94FA8 | ishikawa | 2143 |
1 | EAAC62DF | cyb | ---1 |
1 | EA2D2C41 | malattia | -312 |
1 | E77AC835 | bcwhite(P) | |
1 | E66C9BB0 | tach | |
1 | E145F334 | mquinson | 2143 |
1 | E0BA04C1 | treinen | 321- |
1 | DFE80FB2 | tali | |
1 | DE054F69 | azekulic(P) | |
1 | DC814B09 | jfs | |
1 | CB467E27 | kalfa | |
1 | C9132DDB | yoush | -21- |
1 | C87FFC2F | stevenk | -1-- |
1 | C2CE8099 | knok | 321- |
1 | BED37FD2 | henning(Ks) | 1342 |
1 | BA0A7EB5 | treacy(P) | |
1 | B7D86E0F | cmb | 4213 |
1 | B62849B3 | smarenka | 2143 |
1 | B3C281F4 | alain | 2143 |
1 | B25A5CF1 | omote | |
1 | ABA0E8B2 | sasa | |
1 | AB474598 | baruch | 2143 |
1 | AB2A91F5 | troup | 1--2 |
1 | A827CEDE | afayolle(Gs) | |
1 | A6C805B9 | zorglub | 2134 |
1 | A674A359 | maehara | |
1 | A57D8BF7 | drew | 2143 |
1 | A269D927 | sharky | |
1 | A1696D2B | lfousse | 1232 |
1 | 9BF42B07 | zinoviev | --12 |
1 | 9057B5D3 | vanicat | 2143 |
1 | 8E950E00 | mechanix | |
1 | 8BB527AF | gwolf | 1132 |
1 | 8A1D9A1F | jgoerzen | |
1 | 8807529B | ultrotter | 2134 |
1 | 872EB4E5 | rcardenes | |
1 | 85EE3E0E | angdraug | 12-3 |
1 | 835EB2FF | bossekr | |
1 | 80C83E8E | igloo | 1243 |
1 | 7B8357E5 | andreas | 212- |
1 | 7B80220D | sjr(Gs) | 1342 |
1 | 7796A60B | sfllaw | 1342 |
1 | 75CB1AD2 | toni | 1--- |
1 | 746C51F4 | klindsay | |
1 | 72D03CB1 | kmuto | 4231 |
1 | 71473F66 | ttroxell | 13-4 |
1 | 6E76D81D | seanius | 1243 |
1 | 6C63746D | hector | |
1 | 6C5F196B | malex | 4213 |
1 | 6A9F3C38 | rkrishnan | |
1 | 68021CE4 | ron | ---1 |
1 | 66F24521 | pyro | -123 |
1 | 631B4819 | anfra | |
1 | 62EEAD8B | falk | 1342 |
1 | 61326D40 | jamessan | 13-4 |
1 | 609CD2C0 | berin | --1- |
1 | 5D8CDA7B | guus | 1243 |
1 | 5D8C12EA | rganesan | |
1 | 5D64F870 | zobel | |
1 | 59EF5DBC | bs | |
1 | 57F045DC | camm | |
1 | 564EE4B6 | hazelsct | |
1 | 5623FC45 | moronito | 4213 |
1 | 551BE447 | torsten | |
1 | 54AD21B5 | warmenhoven | |
1 | 53BBA490 | sjg | |
1 | 532005DA | seamus | |
1 | 50973B91 | pjb | 2143 |
1 | 4F83C751 | kmccarty | 12-3 |
1 | 4DB97694 | khkim | |
1 | 4CD6E3D2 | wjl | 4213 |
1 | 4A8854E6 | weinholt | 1243 |
1 | 4950EAA6 | ajkessel | |
1 | 4298C761 | robertc(Ks) | |
1 | 42955682 | kamop | |
1 | 3FD29468 | bengen | -213 |
1 | 3FD25C84 | roktas | 3142 |
1 | 3B047084 | madhack | |
1 | 39CCF0C7 | tagoh | 3142 |
1 | 39A8CCE2 | eugen | 31-2 |
1 | 38015E7E | thb | 1234 |
1 | 36B861C1 | bab | 2143 |
1 | 33FC40A4 | mennucc1 | 3214 |
1 | 2C0FCD1A | wdg | 4312 |
1 | 2B05B73A | rjs | |
1 | 258D8781 | grisu | 31-2 |
1 | 206C5AFD | chewie | -1-1 |
1 | 200D1596 | joy | 2143 |
1 | 1C74E0B7 | alfs | |
1 | 19D03486 | francois | 4123 |
1 | 18EA3457 | rvr | |
1 | 176015ED | evo | |
1 | 16BD77C6 | alfie | |
1 | 12AA1DB8 | jh | |
1 | 128287E8 | daf | |
1 | 09FC015C | godisch | |
1 | 06468DEB | fog | --12 |
1 | 05792F34 | rla | -21- |
1 | 028AF63C | forcer | 3142 |
1 | 004DA6B4 | bg66 | |
0 | . | zufus | -1-- |
0 | . | zoso | -123 |
0 | . | ykomatsu | -123 |
0 | . | xtifr | 1243 |
0 | . | xavier | -312 |
0 | . | wouter | 2143 |
0 | . | will | -132 |
0 | . | warp | 1342 |
0 | . | voss | 1342 |
0 | . | vlm | 2314 |
0 | . | vleeuwen | 4312 |
0 | . | vince | 2134 |
0 | . | ukai | 4123 |
0 | . | tytso | -12- |
0 | . | tjrc1 | 4213 |
0 | . | tats | -1-2 |
0 | . | tao | 1--2 |
0 | . | stone | 2134 |
0 | . | stevegr | 1243 |
0 | . | smig | -1-2 |
0 | . | siggi | 1-44 |
0 | . | shaul | 4213 |
0 | . | sharpone | 1243 |
0 | . | sfrost | 1342 |
0 | . | seb | -21- |
0 | . | salve | 4213 |
0 | . | ruoso | 1243 |
0 | . | rover | --12 |
0 | . | rmayr | -213 |
0 | . | riku | 4123 |
0 | . | rdonald | 12-3 |
0 | . | radu | -1-- |
0 | . | pzn | 112- |
0 | . | pronovic | 1243 |
0 | . | profeta | 321- |
0 | . | portnoy | 12-3 |
0 | . | porridge | 1342 |
0 | . | pmhahn | 4123 |
0 | . | pmachard | 1--2 |
0 | . | pkern | 3124 |
0 | . | pik | 1--2 |
0 | . | phil | 4213 |
0 | . | pfrauenf | 4213 |
0 | . | pfaffben | 2143 |
0 | . | p2 | 1243 |
0 | . | ossk | 1243 |
0 | . | oohara | 1234 |
0 | . | ohura | -213 |
0 | . | nwp | 1342 |
0 | . | noshiro | 4312 |
0 | . | noodles | 2134 |
0 | . | nomeata | 2143 |
0 | . | noahm | 3124 |
0 | . | nils | 3132 |
0 | . | nico | -213 |
0 | . | ms | 3124 |
0 | . | mpalmer | 2143 |
0 | . | moth | 3241 |
0 | . | mlang | 2134 |
0 | . | mjr | 1342 |
0 | . | mjg59 | 1342 |
0 | . | merker | 2--1 |
0 | . | mbuck | 2143 |
0 | . | mbrubeck | 1243 |
0 | . | madduck | 4123 |
0 | . | mace | -1-2 |
0 | . | luther | 1243 |
0 | . | luigi | 4213 |
0 | . | lss | -112 |
0 | . | lightsey | 1--2 |
0 | . | ley | -1-2 |
0 | . | ldrolez | --1- |
0 | . | lange | 4124 |
0 | . | kirk | 1342 |
0 | . | killer | 1243 |
0 | . | kelbert | -214 |
0 | . | juanma | 2134 |
0 | . | jtarrio | 1342 |
0 | . | jonas | 4312 |
0 | . | joerg | 1342 |
0 | . | jmintha | -21- |
0 | . | jimmy | 1243 |
0 | . | jerome | 21-- |
0 | . | jaqque | 1342 |
0 | . | jaq | 4123 |
0 | . | jamuraa | 4123 |
0 | . | iwj | 1243 |
0 | . | ivan | 2341 |
0 | . | hsteoh | 3142 |
0 | . | hilliard | 4123 |
0 | . | helen | 1243 |
0 | . | hecker | 3142 |
0 | . | hartmans | 1342 |
0 | . | guterm | 312- |
0 | . | gniibe | 4213 |
0 | . | glaweh | 4213 |
0 | . | gemorin | 4213 |
0 | . | gaudenz | 3142 |
0 | . | fw | 2134 |
0 | . | fmw | 12-3 |
0 | . | evan | 1--2 |
0 | . | ender | 4213 |
0 | . | elonen | 4123 |
0 | . | eevans | 13-4 |
0 | . | ean | -1-- |
0 | . | dwhedon | 4213 |
0 | . | duncf | 2133 |
0 | . | ds | 1342 |
0 | . | dparsons | 1342 |
0 | . | dlehn | 1243 |
0 | . | dfrey | -123 |
0 | . | deek | 1--2 |
0 | . | davidw | 4132 |
0 | . | davidc | 1342 |
0 | . | dave | 4113 |
0 | . | daenzer | 1243 |
0 | . | cupis | 1--- |
0 | . | cts | -213 |
0 | . | cph | 4312 |
0 | . | cmc | 2143 |
0 | . | clebars | 2143 |
0 | . | chaton | -21- |
0 | . | cgb | -12- |
0 | . | calvin | -1-2 |
0 | . | branden | 1342 |
0 | . | brad | 4213 |
0 | . | bnelson | 1342 |
0 | . | blarson | 1342 |
0 | . | benj | 3132 |
0 | . | bayle | -213 |
0 | . | baran | 1342 |
0 | . | az | 2134 |
0 | . | awm | 3124 |
0 | . | atterer | 4132 |
0 | . | andressh | 1--- |
0 | . | amu | 1--2 |
0 | . | akumria | -312 |
0 | . | ajt | 1144 |
0 | . | ajk | 1342 |
0 | . | agi | 2143 |
0 | . | adric | 2143 |
0 | . | adejong | 1243 |
0 | . | adamm | 12-- |
0 | . | aba | 1143 |
$ time wc -l testfile 7798137 testfile real 0m12.127s user 0m0.765s sys 0m0.399sThen the most idiomatic program. Honestly, I expect it to suck performance-wise:
main = getContents >>= print . length . linesAnd it does:
$ time ./wcl1.hs < testfile 7798137 real 1m14.993s user 0m54.182s sys 0m0.573sBut only by a factor of six. My first hypothesis is that garbage collection is the culprit. And, indeed:
$ time ./wcl1.hs +RTS -sstderr -RTS < testfile ./wcl1.hs +RTS -sstderr 7798137 25,236,174,340 bytes allocated in the heap 5,070,193,924 bytes copied during GC 117,484 bytes maximum residency (3750 sample(s)) 96274 collections in generation 0 ( 26.36s) 3750 collections in generation 1 ( 0.74s) 2 Mb total memory in use INIT time 0.00s ( 0.00s elapsed) MUT time 27.17s ( 42.72s elapsed) GC time 27.10s ( 33.72s elapsed) EXIT time 0.00s ( 0.00s elapsed) Total time 54.27s ( 76.44s elapsed) %GC time 49.9% (44.1% elapsed) Alloc rate 928,824,966 bytes per MUT second Productivity 50.1% of total user, 35.5% of total elapsed real 1m16.616s user 0m54.278s sys 0m0.700sAs you can see, GC takes half of the processing time. Unfortunately, minimizing GC time does not have as big an effect as I hoped:
$ time ./wcl1.hs +RTS -H100M -RTS < testfile 7798137 real 1m1.354s user 0m44.371s sys 0m1.171sHere, I’m effectively telling it to use a 100-megabyte heap. A separate GC profiling run tells me that GC time has dropped from 50 % to 1 %. The memory problem seems to be a red herring. What we’re doing here is creating four separately allocated memory cells for each character in the input. Of course, the cells are generated lazily, that is, a cell pair is allocated when the lines function demands another character; it then creates another cell pair to denote the same character in a list of lines. As soon as each line has been counted, the four cells become garbage. This sounds like a lot of work! But apparently it isn’t; I tried a few variations that did away with the stream of input altogether, not much unlike what Daniel did in his tests. Surprisingly, the performance worsened a lot. The lesson: functional programming language implementations, unlike typical imperative ones, are built on the assumption that you’ll be doing a lot of allocation. What I suspect is taking a lot of the time is arithmetic. Haskell’s Int is boxed, and lazy by default, adding a lot of overhead. I hand-fused length and line, yielding a tail-recursive countLines function, and I added the command-line switch -funbox-strict-fields, which enables a few significant optimizations of the laziness of Int. The results were nice:
ajk@kukkamaljakko:~/scratch$ cat wcl4.hs module Main (main) where main :: IO () main = getContents >>= print . countLines 0 countLines :: Int -> String -> Int countLines n ('n':r) = countLines (n + 1) r countLines n (_:r) = countLines n r countLines n [] = n ajk@kukkamaljakko:~/scratch$ ghc -O -Wall -funbox-strict-fields --make wcl4.hs -o wcl4 Chasing modules from: wcl4.hs Compiling Main ( wcl4.hs, wcl4.o ) Linking ... ajk@kukkamaljakko:~/scratch$ time ./wcl4 < testfile 7798137 real 0m37.961s user 0m29.853s sys 0m0.495s ajk@kukkamaljakko:~/scratch$ time ./wcl4 +RTS -H100M < testfile 7798137 real 0m25.153s user 0m13.497s sys 0m0.803s ajk@kukkamaljakko:~/scratch$With a large heap, the program is only twice as slow as the baseline. This is pretty good, considering that the code is still idiomatically functional. The following rather ugly, imperative program does away with the lazy stream and carefully avoids any laziness without doing any too dirty tricks:
ajk@kukkamaljakko:~/scratch$ cat wcl7.hs module Main (main) where import Data.Word import Data.Array.IO import IO (stdin) count :: Int -> (Int, Int) -> IOUArray Int Word8 -> IO Int count 0 _ _ False = undefined -- force ac evaluation count ac (l,u) _ l > u = return ac count ac (l,u) ar = do a < - readArray ar l let ac' = case a of 10 -> ac + 1 _ -> ac count ac’ (l+1, u) ar maxn :: Int maxn = 4096 main :: IO () main = do arr < - newArray (0,maxn) 0 let loop :: Int -> IO Int loop acc = do n < - hGetArray stdin arr maxn if n == 0 then return acc else do acc' <- count acc (0,n) arr loop acc' res <- loop 0 print res ajk@kukkamaljakko:~/scratch$ ghc -O -Wall -funbox-strict-fields --make wcl7.hs -o wcl7 Chasing modules from: wcl7.hs Compiling Main ( wcl7.hs, wcl7.o ) Linking ... ajk@kukkamaljakko:~/scratch$ time ./wcl7 < testfile 7798137 real 0m13.431s user 0m10.342s sys 0m0.467sOf course, this program is not Haskell 98, but the nonstandard things it uses are fairly common. As can be seen, this version’s performance is, considering the margin of error, equal to the baseline. The compiler used in this test is The Glorious Glasgow Haskell Compilation System, version 6.4.1, as packaged in Debian sid.
Date: Mon, 17 Apr 2000 03:07:13 +0300 From: Antti-Juhani Kaijanaho <gaia@iki.fi> To: "Debian developers' misc list" <debian-devel@lists.debian.org> Subject: RFC/ITP: Constitution of Finland On IRC I proposed packaging the Constitution of Finland. Among other things, it would be an example of a good Constitution :-) The response on IRC was positive; what do people think here? Since Finnish laws are specifically not protected by copyright (see Finnish copyright law), the law is free and can go to main. There is an English translation at http://www.om.fi/perustuslaki/3313.htm. I am researching its copyright status. Assuming people are okay with this, and the copyright issues around the English translation are resolved, I will package Constitution of Finland to woody. -- %%% Antti-Juhani Kaijanaho % gaia@iki.fi % http://www.iki.fi/gaia/ %%% I'm moving IRL on May 2, 2000. New contact information on the home pageDo you remember this infamous thread? :) For some reason, it has almost completely been censored off the Debian mailing list archives. I digged my own archive and put the thread online in a mailbox. Have fun with nostalgia and AJK-bashing :) Maybe this will help to reestablish the thread in the archives; who knows?
very strange, and even now I cannot be 100 % sure. Update: Joe has updated his post to no longer refer to Anthony as AJ.
ajk@kukkaruukku[01:02:34]:dctrl-tools$ grep-available -FInstalled-Size --gt 100000 -sPackage Package: openoffice.org-bin Package: atlc-examples Package: xlibmesa-dri-dbg Package: vtk-doc Package: gcc-snapshot Package: fgfs-base Package: gcc-experimental Package: libopenh323-dbg Package: vegastrike-data
Next.