<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/kernel/src/Makefile, branch maint-20</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Update copyright year</title>
<updated>2017-06-14T13:36:21+00:00</updated>
<author>
<name>Hans Nilsson</name>
<email>hans@erlang.org</email>
</author>
<published>2017-06-14T13:36:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=43718d3b81d7f3d08e25047e22d579801bbe5044'/>
<id>43718d3b81d7f3d08e25047e22d579801bbe5044</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add persistence to history of the non-legacy shell</title>
<updated>2017-05-17T11:53:01+00:00</updated>
<author>
<name>Fred Hebert</name>
<email>mononcqc@ferd.ca</email>
</author>
<published>2017-04-22T21:39:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=4b9e1dd37f6e55ba1a04fad36d8ed3c0201b1942'/>
<id>4b9e1dd37f6e55ba1a04fad36d8ed3c0201b1942</id>
<content type='text'>
This patch adds a mechanism by which shell history gets stored
persistently on disk and gets loaded whenever a new shell session
begins.

The log files are added to the user's cache directory, with multiple
files in it, although the location is configurable.

All Erlang instances on a given host will share the same log file.

There are two hook points in group.erl that are used: when instantiating
the buffer, where we fetch from disk, and when adding a line to the
buffer (gets stored).

This allows all shell instances to use the same base set of lines when
loaded, but to keep their history separate after the fact. As lines are
added as you go, a new shell session (with ^G -&gt; s -&gt; c) will have
access to previous sessions' lines.

The implementation makes use of the disk_log library with a rotating log
in order to store data, and allow automated repairs.

By default, the feature is disabled and must be turned on through OTP
environment variable part of the kernel application. The options
include:

| Option                   | Accepted values   | Default   | Description          |
| ------------------------ | ----------------- |---------- | -------------------- |
| shell_history            | enabled, disabled | disabled  | turn feature on/off  |
| shell_history_path       | any string        | user cache| where to put files   |
| shell_history_file_bytes | 51200..N bytes    | 512kb     | max data size (&gt;50kb)|
| shell_history_drop       | ["q().", ...]     | []        | blacklisted lines    |

A version header is added to the disk_log configuration, allowing
changes in the storage format to be enacted in the future (i.e. adding
segmentation by node name in the same file, or encoding) without
conflict.

Log rotation is used with multiple log files to ensure proper
enforcement of resizing without too much data loss. Because disk_log
does not allow to just flush bits of content on rewrite (it truncates
any full file), we instead use a wrap log and try to divide the
configured size into up to 10 log files so that every time we rotate a
log, we lose only 10% of the data. This remains true for corrupted files
that cannot fully be repaired.

This many-logs-based approach in turn forces the use of a minimal log
size for the `shell_history_file_bytes` configuration, since it has to
be divided by 10.

The shell history is not loaded for the `user` process which, despite
running the group.erl module, does not actually require history as it
mostly just forwards IO protocol information.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a mechanism by which shell history gets stored
persistently on disk and gets loaded whenever a new shell session
begins.

The log files are added to the user's cache directory, with multiple
files in it, although the location is configurable.

All Erlang instances on a given host will share the same log file.

There are two hook points in group.erl that are used: when instantiating
the buffer, where we fetch from disk, and when adding a line to the
buffer (gets stored).

This allows all shell instances to use the same base set of lines when
loaded, but to keep their history separate after the fact. As lines are
added as you go, a new shell session (with ^G -&gt; s -&gt; c) will have
access to previous sessions' lines.

The implementation makes use of the disk_log library with a rotating log
in order to store data, and allow automated repairs.

By default, the feature is disabled and must be turned on through OTP
environment variable part of the kernel application. The options
include:

| Option                   | Accepted values   | Default   | Description          |
| ------------------------ | ----------------- |---------- | -------------------- |
| shell_history            | enabled, disabled | disabled  | turn feature on/off  |
| shell_history_path       | any string        | user cache| where to put files   |
| shell_history_file_bytes | 51200..N bytes    | 512kb     | max data size (&gt;50kb)|
| shell_history_drop       | ["q().", ...]     | []        | blacklisted lines    |

A version header is added to the disk_log configuration, allowing
changes in the storage format to be enacted in the future (i.e. adding
segmentation by node name in the same file, or encoding) without
conflict.

Log rotation is used with multiple log files to ensure proper
enforcement of resizing without too much data loss. Because disk_log
does not allow to just flush bits of content on rewrite (it truncates
any full file), we instead use a wrap log and try to divide the
configured size into up to 10 log files so that every time we rotate a
log, we lose only 10% of the data. This remains true for corrupted files
that cannot fully be repaired.

This many-logs-based approach in turn forces the use of a minimal log
size for the `shell_history_file_bytes` configuration, since it has to
be divided by 10.

The shell history is not loaded for the `user` process which, despite
running the group.erl module, does not actually require history as it
mostly just forwards IO protocol information.
</pre>
</div>
</content>
</entry>
<entry>
<title>kernel: Add gen_event signal server and default handler</title>
<updated>2017-01-19T13:24:42+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2015-04-13T16:47:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a7b52ad679e6a58a9351a26e198eee70067b000f'/>
<id>a7b52ad679e6a58a9351a26e198eee70067b000f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite inet* for address family 'local'</title>
<updated>2016-06-01T14:21:30+00:00</updated>
<author>
<name>Raimo Niskanen</name>
<email>raimo@erlang.org</email>
</author>
<published>2016-05-27T12:23:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=0f1a85ef0373f2b5767579a30a6dc29eeb16438a'/>
<id>0f1a85ef0373f2b5767579a30a6dc29eeb16438a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Change license text to APLv2</title>
<updated>2015-06-18T09:31:02+00:00</updated>
<author>
<name>Bruce Yinhe</name>
<email>bruce@erlang.org</email>
</author>
<published>2015-06-18T09:31:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=738c34d4bb8f1a3811acd00af8c6c12107f8315b'/>
<id>738c34d4bb8f1a3811acd00af8c6c12107f8315b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Install internal hrl files when necessary</title>
<updated>2014-08-26T09:53:51+00:00</updated>
<author>
<name>Peter Lemenkov</name>
<email>lemenkov@gmail.com</email>
</author>
<published>2014-08-26T09:53:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=22b78c2df4d5faa80b6a96d3fb2e204ad0662c13'/>
<id>22b78c2df4d5faa80b6a96d3fb2e204ad0662c13</id>
<content type='text'>
Sometimes we install *.erl files. Some these files include a private
*.hrl files, so in order to make these *.erl files usable we have to
install these private includes as well.

Signed-off-by: Peter Lemenkov &lt;lemenkov@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sometimes we install *.erl files. Some these files include a private
*.hrl files, so in order to make these *.erl files usable we have to
install these private includes as well.

Signed-off-by: Peter Lemenkov &lt;lemenkov@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright years</title>
<updated>2013-01-25T16:58:15+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2013-01-25T16:58:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3fb4def74a64a63fbb2b28aef6c5920d7db3ad6e'/>
<id>3fb4def74a64a63fbb2b28aef6c5920d7db3ad6e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Turn warnings to errors on selected applications</title>
<updated>2013-01-23T12:37:42+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2013-01-23T12:25:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=13dc75d665058fea45d8bf33dff785049903cfd9'/>
<id>13dc75d665058fea45d8bf33dff785049903cfd9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'nox/enable-silent-rules/OTP-10726'</title>
<updated>2013-01-18T13:36:23+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2013-01-18T13:36:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b0e4f20f2abde9fc264995317966f373775e2b2b'/>
<id>b0e4f20f2abde9fc264995317966f373775e2b2b</id>
<content type='text'>
* nox/enable-silent-rules/OTP-10726:
  Implement ./otp_build configure --enable-silent-rules
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* nox/enable-silent-rules/OTP-10726:
  Implement ./otp_build configure --enable-silent-rules
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement ./otp_build configure --enable-silent-rules</title>
<updated>2013-01-15T20:42:34+00:00</updated>
<author>
<name>Anthony Ramine</name>
<email>n.oxyde@gmail.com</email>
</author>
<published>2012-11-28T10:45:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=fed9a8415fc77ed42bf9a94ea421eff4f62c5eb4'/>
<id>fed9a8415fc77ed42bf9a94ea421eff4f62c5eb4</id>
<content type='text'>
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
</pre>
</div>
</content>
</entry>
</feed>
