<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/py.mk, branch 3.0.0</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=3.0.0</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=3.0.0'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2018-05-14T21:41:17+00:00</updated>
<entry>
<title>move reload exception to reload.c</title>
<updated>2018-05-14T21:41:17+00:00</updated>
<author>
<name>Roy Hooper</name>
<email>rhooper@toybox.ca</email>
</author>
<published>2018-05-14T21:41:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=92b1cb574320578abe022c021c4b1891cfafbae6'/>
<id>urn:sha1:92b1cb574320578abe022c021c4b1891cfafbae6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Introduce a long lived section of the heap.</title>
<updated>2018-01-24T18:33:46+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott.shawcroft@gmail.com</email>
</author>
<published>2018-01-24T00:22:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=416abe33ed44e44d8f75342731080217e123278b'/>
<id>urn:sha1:416abe33ed44e44d8f75342731080217e123278b</id>
<content type='text'>
This adapts the allocation process to start from either end of the heap
when searching for free space. The default behavior is identical to the
existing behavior where it starts with the lowest block and looks higher.
Now it can also look from the highest block and lower depending on the
long_lived parameter to gc_alloc. As the heap fills, the two sections may
overlap. When they overlap, a collect may be triggered in order to keep
the long lived section compact. However, free space is always eligable
for each type of allocation.

By starting from either of the end of the heap we have ability to separate
short lived objects from long lived ones. This separation reduces heap
fragmentation because long lived objects are easy to densely pack.

Most objects are short lived initially but may be made long lived when
they are referenced by a type or module. This involves copying the
memory and then letting the collect phase free the old portion.

QSTR pools and chunks are always long lived because they are never freed.

The reallocation, collection and free processes are largely unchanged. They
simply also maintain an index to the highest free block as well as the lowest.
These indices are used to speed up the allocation search until the next collect.

In practice, this change may slightly slow down import statements with the
benefit that memory is much less fragmented afterwards. For example, a test
import into a 20k heap that leaves ~6k free previously had the largest
continuous free space of ~400 bytes. After this change, the largest continuous
free space is over 3400 bytes.
</content>
</entry>
<entry>
<title>Merge commit 'f869d6b2e339c04469c6c9ea3fb2fabd7bbb2d8c' into nrf2_merge</title>
<updated>2017-10-25T05:31:16+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott.shawcroft@gmail.com</email>
</author>
<published>2017-10-25T05:31:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=73c15dcf8b1b927757a595a867334b38355ddb8f'/>
<id>urn:sha1:73c15dcf8b1b927757a595a867334b38355ddb8f</id>
<content type='text'>
This is prep for merging in the NRF5 pull request.
</content>
</entry>
<entry>
<title>esp8266: Set DEFPSIZE=1024, MINCACHE=3 for "btree" module.</title>
<updated>2017-09-10T10:54:00+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2017-09-10T10:54:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9355cca610e2e7f16a5847271fefe47db97b8cc4'/>
<id>urn:sha1:9355cca610e2e7f16a5847271fefe47db97b8cc4</id>
<content type='text'>
Defaults of 4096 and 5 respectively are too high to esp8266, causing
out of memory with a database beyond couple of pages.
</content>
</entry>
<entry>
<title>Initial merge of micropython v1.9.2 into circuitpython 2.0.0 (in development) master.</title>
<updated>2017-08-26T02:17:07+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2017-08-26T02:17:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ef61b5ecb59e9b4e37e3e3c023c62d583c23eb16'/>
<id>urn:sha1:ef61b5ecb59e9b4e37e3e3c023c62d583c23eb16</id>
<content type='text'>
cpx build compiles and loads and works in repl; test suite not run yet
esp8266 not tested yet
</content>
</entry>
<entry>
<title>Added ability to freeze multiple directories; freeze neopixel library in cpx build (#199)</title>
<updated>2017-08-23T18:05:59+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2017-08-23T18:05:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=74cfdeb316420a3732370a5e19a6822c52395384'/>
<id>urn:sha1:74cfdeb316420a3732370a5e19a6822c52395384</id>
<content type='text'>
Reworked frozen module support: clean up makefiles and handle multiple directories.
Modules to freeze are included as git submodules.

Add neopixel to circuitplayground express build.

Fixes #56 </content>
</entry>
<entry>
<title>all: Make use of $(TOP) variable in Makefiles, instead of "..".</title>
<updated>2017-08-11T02:22:19+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-08-11T02:22:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=7d4a2f773cc6ce24a91e2d210378188f3371e8a6'/>
<id>urn:sha1:7d4a2f773cc6ce24a91e2d210378188f3371e8a6</id>
<content type='text'>
$(TOP) is defined in py/mkenv.mk and should be used to refer to the top
level of this repository.
</content>
</entry>
<entry>
<title>py/py.mk: Make berkeley-db C-defs apply only to relevant source files.</title>
<updated>2017-07-24T05:50:47+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-07-24T05:50:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=1ed3356540f55c9ed4167c87166f6d18b2868f9c'/>
<id>urn:sha1:1ed3356540f55c9ed4167c87166f6d18b2868f9c</id>
<content type='text'>
Otherwise they can interfere (eg redefinition of "abort") with other source
files in a given uPy port.
</content>
</entry>
<entry>
<title>various: Spelling fixes</title>
<updated>2017-05-29T08:36:05+00:00</updated>
<author>
<name>Ville Skyttä</name>
<email>ville.skytta@iki.fi</email>
</author>
<published>2017-05-29T07:08:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ca16c3821053e5bf2b87aeb10007f73f31dc1eac'/>
<id>urn:sha1:ca16c3821053e5bf2b87aeb10007f73f31dc1eac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>all: Use full path name when including mp-readline/timeutils/netutils.</title>
<updated>2017-03-31T11:29:39+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-03-31T11:29:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=b6c7e4b143d96ff9f84ccb22d83b1e15ab084250'/>
<id>urn:sha1:b6c7e4b143d96ff9f84ccb22d83b1e15ab084250</id>
<content type='text'>
This follows the pattern of how all other headers are now included, and
makes it explicit where the header file comes from.  This patch also
removes -I options from Makefile's that specify the mp-readline/timeutils/
netutils directories, which are no longer needed.
</content>
</entry>
</feed>
