]> Sergey Matveev's repositories - public-inbox.git/blob - Documentation/RelNotes/v1.6.0.eml
153b1f131de3046c33d421cc9f3a000e33cb9ef2
[public-inbox.git] / Documentation / RelNotes / v1.6.0.eml
1 From: Eric Wong <e@yhbt.net>
2 To: meta@public-inbox.org
3 Subject: [WIP] public-inbox 1.6.0
4 MIME-Version: 1.0
5 Content-Type: text/plain; charset=utf-8
6 Content-Disposition: inline
7
8 A big release containing several performance optimizations, a
9 new anonymous IMAP server, and more.  It represents an
10 incremental improvement over 1.5 in several areas with more to
11 come in 1.7.
12
13 The read-only httpd and nntpd daemons no longer block the event
14 loop when retrieving blobs from git, making better use of SMP
15 systems while accomodating slow storage.
16
17 Indexing can be now be tuned to give somewhat usable performance
18 on HDD storage, though we can't defy the laws of physics, either.
19
20 * General changes:
21
22   - ~/.cache/public-inbox/inline-c is automatically used for Inline::C
23     if it exists.  PERL_INLINE_DIRECTORY in env remains supported
24     and prioritized to support `nobody'-type users without HOME.
25
26   - msgmap.sqlite3 uses journal_mode=TRUNCATE, matching over.sqlite3
27     behavior for a minor reduction in VFS traffic
28
29   - public-inbox-tuning(7) - new manpage containing pointers to
30     various tuning options and tips for certain HW and OS setups.
31
32   - Copy-on-write is disabled on BTRFS for new indices to avoid
33     fragmentation.  See the new public-inbox-tuning(7) manpage.
34
35   - message/{rfc822,news,global} attachments are decoded recursively
36     and indexed for search.  Reindexing (see below) is required
37     to ensure these attachments are indexed in old messages.
38
39   - inbox.lock (v2) and ssoma.lock (v1) files are written to
40     on message delivery (or spam removal) to wake up read-only
41     daemons via inotify or kqueue.
42
43   - `--help' switch supported by command-line tools
44
45 * Upgrading for new features in 1.6
46
47   The ordering of these steps is only necessary if you intend to
48   use some new features in 1.6.  Future releases may have
49   different instructions (or be entirely transparent).
50
51   0. install (use your OS package manager, or "make install")
52
53   1. restart public-inbox-watch instances if you have any
54
55   2. Optional: remove Plack::Middleware::Deflater if you're using
56      a custom .psgi file for PublicInbox::WWW.  This only saves
57      some memory and CPU cycles, and you may also skip this step
58      if you expect to roll back to 1.5.0 for any reason.
59
60   Steps 3a and 3b may happen in any order, 3b is optional
61   and is only required to use new WWW and IMAP features.
62
63   3a. restart existing read-only daemons if you have them
64       (public-inbox-nntpd, public-inbox-httpd)
65
66   3b. run "public-inbox-index -c --reindex --rethread --all"
67       to reindex all configured inboxes
68
69   4. configure and start the new public-inbox-imapd.  This
70      requires reindexing in 3b, but there's no obligation to
71      run an IMAP server, either.
72
73 * public-inbox-index
74
75   There are several new options to improve usability on slow,
76   rotational storage.
77
78   - `--batch-size=BYTES' or publicinbox.indexBatchSize parameter
79     to reduce frequency of random writes on HDDs
80
81   - `--sequential-shard' or publicInbox.sequentialShard parameter
82     to improve OS page cache utilization on HDDs.
83
84   - `--no-fsync' when combined with Xapian 1.4+ can be used to
85     speed up indexing on SSDs and small (default) `--batch-size'
86
87   - `--rethread' option to go with `--reindex' (use sparringly,
88     see manpage)
89
90   - parallelize v2 updates by default, `--sequential-shard' and
91     `-j0' is (once again) allowed to disable parallelization
92
93   - (re-)indexing parallelizes blob reads from git
94
95   - `--all' may be specified to index all configured inboxes
96
97 * public-inbox-learn
98
99   - `rm' supports `--all' to remove from all configured inboxes
100
101 * public-inbox-imapd
102
103   - new read-only IMAP daemon similar to public-inbox-nntpd
104     `AUTH=ANONYMOUS' is supported, but any username and
105     password for clients without `AUTH=ANONYMOUS' support.
106
107 * public-inbox-nntpd
108
109   - blob reads from git are handled asynchronously
110
111 * public-inbox-httpd
112
113   - Plack::Middleware::Deflater is no longer loaded by default
114     when no .psgi file is specified; PublicInbox::WWW can rely
115     on gzip for buffering (see below)
116
117 * PublicInbox::WWW
118
119   - use consistent blank line around attachment links
120
121   - Attachments in message/{rfc822,news,global} messages can be
122     individually downloaded.  Downloading the entire message/rfc822
123     file in full remains supported
124
125   - $INBOX_DIR/description is treated as UTF-8
126
127   - HTML, Atom, and text/plain responses are gzipped without
128     relying on Plack::Middleware::Deflater
129
130   - Multi-message endpoints (/t.mbox.gz, /T/, /t/, etc) are ~10% faster
131     when running under public-inbox-httpd with asynchronous blob
132     retrieval
133
134   - mbox search results may now include all messages pertaining to that
135     thread.  Needs `--reindex' mentioned above in
136     `Upgrading for new features in 1.6'.
137
138   - fix mbox.gz search results downloads for lynx users
139
140   - small navigation tweaks, more prominent mirroring instructions
141
142 * public-inbox-watch
143
144   - Linux::Inotify2 or IO::KQueue is used directly,
145     Filesys::Notify::Simple is no longer required
146
147   - NNTP groups and IMAP mailboxes may be watched in addition
148     to Maildirs (lightly tested).
149
150 * Ongoing internal changes
151
152   - reduce event loop hogging for many-inbox support
153
154   - use more Perl v5.10-isms, future-proof against Perl 8
155
156   - more consistent variable and field naming, improve internal
157     documentation and comments
158
159   - start supporting >=40 char git identifiers for SHA-256
160
161   - test -httpd-specific code paths via Plack::Test::ExternalServer
162     in addition to generic PSGI paths.
163
164 Please report bugs via plain-text mail to: meta@public-inbox.org
165
166 See archives at https://public-inbox.org/meta/ for all history.
167 See https://public-inbox.org/TODO for what the future holds.