<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/stdlib/src, branch OTP-18.3.4.10</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Update appups in kernel, stdlib and sasl for OTP-18.3</title>
<updated>2016-02-25T14:09:32+00:00</updated>
<author>
<name>Siri Hansen</name>
<email>siri@erlang.org</email>
</author>
<published>2016-02-25T12:24:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=df5c9acc3a73a95cddda9f3a5206d4cb4319a9aa'/>
<id>df5c9acc3a73a95cddda9f3a5206d4cb4319a9aa</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 'benwilson512/better-maps-with' into maint</title>
<updated>2016-02-25T09:45:10+00:00</updated>
<author>
<name>Henrik Nord</name>
<email>henrik@erlang.org</email>
</author>
<published>2016-02-25T09:45:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=93c6b942bf99e73e566e3ab8c6dea1848a1e4b1e'/>
<id>93c6b942bf99e73e566e3ab8c6dea1848a1e4b1e</id>
<content type='text'>
* benwilson512/better-maps-with:
  Improved maps:with/2 and maps:without/2 algorithm

OTP-13376
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* benwilson512/better-maps-with:
  Improved maps:with/2 and maps:without/2 algorithm

OTP-13376
</pre>
</div>
</content>
</entry>
<entry>
<title>stdlib: Add suppression of Dialyzer warnings</title>
<updated>2016-02-17T08:17:32+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-02-03T13:44:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=03e5309b312bd1c714a3874eba1384bf5b4feff5'/>
<id>03e5309b312bd1c714a3874eba1384bf5b4feff5</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 'nybek/speed_up_supervisor_count_children' into maint</title>
<updated>2016-02-10T10:13:35+00:00</updated>
<author>
<name>Siri Hansen</name>
<email>siri@erlang.org</email>
</author>
<published>2016-02-10T10:10:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8fba155bdc0b45f0504756d1ea695d9c53a44f80'/>
<id>8fba155bdc0b45f0504756d1ea695d9c53a44f80</id>
<content type='text'>
* nybek/speed_up_supervisor_count_children:
  Speed up supervisor:count_children/1; simple_one_for_one
  Add supervisor:get_callback_module/1

OTP-13290
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* nybek/speed_up_supervisor_count_children:
  Speed up supervisor:count_children/1; simple_one_for_one
  Add supervisor:get_callback_module/1

OTP-13290
</pre>
</div>
</content>
</entry>
<entry>
<title>Improved maps:with/2 and maps:without/2 algorithm</title>
<updated>2016-02-09T16:06:08+00:00</updated>
<author>
<name>Ben Wilson</name>
<email>benwilson512@gmail.com</email>
</author>
<published>2016-02-09T02:43:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=38330fa8bfc5e2ea190923fa8f6434b8c5fbedad'/>
<id>38330fa8bfc5e2ea190923fa8f6434b8c5fbedad</id>
<content type='text'>
The current implementation is roughly O(N*M) where N is the number of items to be removed, and M is the number of items in the map. This does not include the cost of `maps:from_list` or `maps:to_list`. This leads to pretty horrifying execution times on large maps regardless of how many or few keys are to be removed.

The new implementation is O(N) where N is the number of items to be removed. For each N there's the cost of removing a key from a map, and but in practice that turns out to be a vast improvement for all map sizes I tested

The new maps:take/2 implementation similarly builds a list of keys and values by iterating only the list of desired keys, and then hands it off to maps:from_list. This turned out to be faster than N maps:put calls.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current implementation is roughly O(N*M) where N is the number of items to be removed, and M is the number of items in the map. This does not include the cost of `maps:from_list` or `maps:to_list`. This leads to pretty horrifying execution times on large maps regardless of how many or few keys are to be removed.

The new implementation is O(N) where N is the number of items to be removed. For each N there's the cost of removing a key from a map, and but in practice that turns out to be a vast improvement for all map sizes I tested

The new maps:take/2 implementation similarly builds a list of keys and values by iterating only the list of desired keys, and then hands it off to maps:from_list. This turned out to be faster than N maps:put calls.
</pre>
</div>
</content>
</entry>
<entry>
<title>Speed up supervisor:count_children/1; simple_one_for_one</title>
<updated>2016-02-03T11:14:11+00:00</updated>
<author>
<name>Rory Byrne</name>
<email>rory@nybek.com</email>
</author>
<published>2015-05-28T18:41:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=264a5e804d6e23bf6c6916887669760cbf243caa'/>
<id>264a5e804d6e23bf6c6916887669760cbf243caa</id>
<content type='text'>
Speed up supervisor:count_children/1 for simple_one_for_one
supervisors. This is achieved by avoiding looping through all the
child process and verifying that each one is alive.

For a supervisor with 100,000 'temporary' children the count-time will
drop from approx 25ms to about 0.005ms.

For a supervisor with 100,000 'permanent' or 'transient' children the
count-time will drop from approx 30ms to about 0.005ms.

This avoids having the supervisor block for an extended period while
the count takes place. Under normal circumstances the accuracy of the
result should also improve since the duration is too short for many
processes to die during the count.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Speed up supervisor:count_children/1 for simple_one_for_one
supervisors. This is achieved by avoiding looping through all the
child process and verifying that each one is alive.

For a supervisor with 100,000 'temporary' children the count-time will
drop from approx 25ms to about 0.005ms.

For a supervisor with 100,000 'permanent' or 'transient' children the
count-time will drop from approx 30ms to about 0.005ms.

This avoids having the supervisor block for an extended period while
the count takes place. Under normal circumstances the accuracy of the
result should also improve since the duration is too short for many
processes to die during the count.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add supervisor:get_callback_module/1</title>
<updated>2016-02-03T11:14:10+00:00</updated>
<author>
<name>Siri Hansen</name>
<email>siri@erlang.org</email>
</author>
<published>2016-02-03T11:10:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=4422cb32637a341eac2dc03172e4aa859be67f34'/>
<id>4422cb32637a341eac2dc03172e4aa859be67f34</id>
<content type='text'>
This function is used by release_handler during upgrade. This was
earlier implemented in the release_handler, but it required a copy og
the definition of the supervisor's internal state, which caused
problems when this state was updated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This function is used by release_handler during upgrade. This was
earlier implemented in the release_handler, but it required a copy og
the definition of the supervisor's internal state, which caused
problems when this state was updated.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'rickard/monotonic-time-improvements/OTP-13222' into maint</title>
<updated>2016-02-02T09:17:05+00:00</updated>
<author>
<name>Rickard Green</name>
<email>rickard@erlang.org</email>
</author>
<published>2016-02-02T09:17:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=178cff0a09223da707ca8472a71dbe4125466493'/>
<id>178cff0a09223da707ca8472a71dbe4125466493</id>
<content type='text'>
* rickard/monotonic-time-improvements/OTP-13222:
  Introduce time management in native APIs
  Introduce time warp safe replacement for safe_fixed option
  Introduce time warp safe trace timestamp formats
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* rickard/monotonic-time-improvements/OTP-13222:
  Introduce time management in native APIs
  Introduce time warp safe replacement for safe_fixed option
  Introduce time warp safe trace timestamp formats
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'lrascao/stdlib/beam_lib-race-condition/OTP-13278' into maint</title>
<updated>2016-02-01T11:19:13+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-02-01T11:19:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5dac3400b00e499cb7c436b6b71c510c718d92cf'/>
<id>5dac3400b00e499cb7c436b6b71c510c718d92cf</id>
<content type='text'>
* lrascao/stdlib/beam_lib-race-condition/OTP-13278:
  Check for already started beam_lib crypto server
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lrascao/stdlib/beam_lib-race-condition/OTP-13278:
  Check for already started beam_lib crypto server
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'josevalim/stdlib/edlin/OTP-13281' into maint</title>
<updated>2016-01-29T10:52:01+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-01-29T10:52:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=88394f33141921d62ecb0ec98d707a7857811555'/>
<id>88394f33141921d62ecb0ec98d707a7857811555</id>
<content type='text'>
* josevalim/stdlib/edlin/OTP-13281:
  Do not consider "." part of names in edlin
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* josevalim/stdlib/edlin/OTP-13281:
  Do not consider "." part of names in edlin
</pre>
</div>
</content>
</entry>
</feed>
