<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/extmod, branch v1.8.2</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=v1.8.2</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=v1.8.2'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2016-07-06T23:16:24+00:00</updated>
<entry>
<title>extmod/moduos_dupterm: Reuse dupterm_arr_obj for write operations.</title>
<updated>2016-07-06T23:16:24+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-06T23:16:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a4c8a1ffe86ace0b4394d751a2d3716f7d865ba6'/>
<id>urn:sha1:a4c8a1ffe86ace0b4394d751a2d3716f7d865ba6</id>
<content type='text'>
Instead of allocating new array object header again and again, causing
memory fragmentation.
</content>
</entry>
<entry>
<title>extmod/moduos_dupterm: Reserve buffer bytearray object for dupterm.</title>
<updated>2016-07-04T10:32:30+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-04T10:32:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=426112ce88bf3f6f86bf6900b74d7719d9991167'/>
<id>urn:sha1:426112ce88bf3f6f86bf6900b74d7719d9991167</id>
<content type='text'>
Allocating it for each read/write operation is a memory fragmentation
hazard.
</content>
</entry>
<entry>
<title>extmod/modbtree: Fixes for nanbox build.</title>
<updated>2016-07-02T12:58:13+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-02T12:58:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=417dc0c05d93acdc34598283c3c1a7bccccb4d36'/>
<id>urn:sha1:417dc0c05d93acdc34598283c3c1a7bccccb4d36</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extmod/modbtree: Fix unused argument warning.</title>
<updated>2016-07-02T12:21:54+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-02T12:21:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=b09cd0e1eca4f64ca452f68881c25533b7f2e8a0'/>
<id>urn:sha1:b09cd0e1eca4f64ca452f68881c25533b7f2e8a0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extmod/modwebrepl: Add readinto() method.</title>
<updated>2016-07-02T11:05:37+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-02T11:05:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=c880f91ac0d5157c23a78e5e9739388b57419e5d'/>
<id>urn:sha1:c880f91ac0d5157c23a78e5e9739388b57419e5d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extmod/modwebsocket: Add readinto() method.</title>
<updated>2016-07-02T11:03:49+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-07-02T11:03:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=03b0279c6db473c0597e41204ad2f9803ba557d1'/>
<id>urn:sha1:03b0279c6db473c0597e41204ad2f9803ba557d1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extmod/modbtree: Cleverly implement "for key in btree:" syntax.</title>
<updated>2016-06-23T17:08:37+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-06-23T17:08:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=2f7ebf16de471514066ffb3935370ec66ff66d4f'/>
<id>urn:sha1:2f7ebf16de471514066ffb3935370ec66ff66d4f</id>
<content type='text'>
I.e. make it work like btree.keys(), while still not using a separate
iterator type.
</content>
</entry>
<entry>
<title>extmod/modbtree: Implement keys(), values(), items() iterators.</title>
<updated>2016-06-20T12:50:31+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-06-20T12:50:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=6b088a671ac010d78c566a86e70a460721485fa6'/>
<id>urn:sha1:6b088a671ac010d78c566a86e70a460721485fa6</id>
<content type='text'>
Each takes optional args of starting key, ending key, and flags (ending
key inclusive, reverse order).
</content>
</entry>
<entry>
<title>extmod/modlwip: Store a chain of incoming pbufs, instead of only one.</title>
<updated>2016-06-19T16:15:20+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-06-19T12:53:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5071ceea077dec32536315549f8d28614f7e0cfc'/>
<id>urn:sha1:5071ceea077dec32536315549f8d28614f7e0cfc</id>
<content type='text'>
Storing a chain of pbuf was an original design of @pfalcon's lwIP socket
module. The problem with storing just one, like modlwip does is that
"peer closed connection" notification is completely asynchronous and out of
band. So, there may be following sequence of actions:

1. pbuf #1 arrives, and stored in a socket.
2. pbuf #2 arrives, and rejected, which causes lwIP to put it into a
queue to re-deliver later.
3. "Peer closed connection" is signaled, and socket is set at such status.
4. pbuf #1 is processed.
5. There's no stored pbufs in teh socket, and socket status is "peer closed
connection", so EOF is returned to a client.
6. pbuf #2 gets redelivered.

Apparently, there's no easy workaround for this, except to queue all
incoming pbufs in a socket. This may lead to increased memory pressure,
as number of pending packets would be regulated only by TCP/IP flow
control, whereas with previous setup lwIP had a global overlook of number
packets waiting for redelivery and could regulate them centrally.
</content>
</entry>
<entry>
<title>extmod/machine_pinbase: Fix nanbox build.</title>
<updated>2016-06-18T21:26:57+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2016-06-18T21:26:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=efee5773185ded1d8360c9a785d205aec0ce01f0'/>
<id>urn:sha1:efee5773185ded1d8360c9a785d205aec0ce01f0</id>
<content type='text'>
MP_ROM_PTR() is only for data structures initialization, code should use
MP_OBJ_FROM_PTR().
</content>
</entry>
</feed>
