<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/map.h, branch encoding</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=encoding</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=encoding'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2014-03-30T12:54:02+00:00</updated>
<entry>
<title>Merge map.h into obj.h.</title>
<updated>2014-03-30T12:54:02+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-03-30T12:54:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=df6567e6345c763182fa237a4497ab94ee6ffc20'/>
<id>urn:sha1:df6567e6345c763182fa237a4497ab94ee6ffc20</id>
<content type='text'>
Pretty much everyone needs to include map.h, since it's such an integral
part of the Micro Python object implementation.  Thus, the definitions
are now in obj.h instead.  map.h is removed.
</content>
</entry>
<entry>
<title>py: Fix bug in type_store_attr, trying to store to ROM.</title>
<updated>2014-03-27T09:32:26+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-03-27T09:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=945a01c4e37509a2be8d298cbd762e3fe61aca95'/>
<id>urn:sha1:945a01c4e37509a2be8d298cbd762e3fe61aca95</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove mp_obj_type_t.methods entry and use .locals_dict instead.</title>
<updated>2014-03-26T21:47:19+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-03-26T21:47:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9b196cddab80e24b9ce66b1c922cb757b11fb16a'/>
<id>urn:sha1:9b196cddab80e24b9ce66b1c922cb757b11fb16a</id>
<content type='text'>
Originally, .methods was used for methods in a ROM class, and
locals_dict for methods in a user-created class.  That distinction is
unnecessary, and we can use locals_dict for ROM classes now that we have
ROMable maps.

This removes an entry in the bloated mp_obj_type_t struct, saving a word
for each ROM object and each RAM object.  ROM objects that have a
methods table (now a locals_dict) need an extra word in total (removed
the methods pointer (1 word), no longer need the sentinel (2 words), but
now need an mp_obj_dict_t wrapper (4 words)).  But RAM objects save a
word because they never used the methods entry.

Overall the ROM usage is down by a few hundred bytes, and RAM usage is
down 1 word per user-defined type/class.

There is less code (no need to check 2 tables), and now consistent with
the way ROM modules have their tables initialised.

Efficiency is very close to equivaluent.
</content>
</entry>
<entry>
<title>py: Take out bitfield entries from their own structure.</title>
<updated>2014-02-26T17:40:52+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-02-26T17:40:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=510477557d1cd13dc3cfdebf32338aa1b75180cb'/>
<id>urn:sha1:510477557d1cd13dc3cfdebf32338aa1b75180cb</id>
<content type='text'>
Don't need to wrap bitfields in their own struct.  Compiler does the
correct thing without it.
</content>
</entry>
<entry>
<title>py: Allow mp_map_t to be initialised by a fixed-size, const table.</title>
<updated>2014-02-08T18:47:46+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-02-08T18:47:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9a58d760c3594aa5c75ad4b6be8b70f719e8a867'/>
<id>urn:sha1:9a58d760c3594aa5c75ad4b6be8b70f719e8a867</id>
<content type='text'>
This allows keyword maps to be created directly from stack data.
</content>
</entry>
<entry>
<title>Add mp_map_deinit() &amp; mp_map_free() to finalize maps.</title>
<updated>2014-01-25T00:04:01+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-01-24T22:02:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9a24a0465f4924ae1853a822d245af9e3a24fc2d'/>
<id>urn:sha1:9a24a0465f4924ae1853a822d245af9e3a24fc2d</id>
<content type='text'>
mp_map_deinit() finalizes static map, mp_map_free() - dynamic.
</content>
</entry>
<entry>
<title>Implemented set.remove</title>
<updated>2014-01-12T19:16:59+00:00</updated>
<author>
<name>John R. Lenton</name>
<email>jlenton@gmail.com</email>
</author>
<published>2014-01-12T18:23:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ae00d334c6222fa9716135967a7c512b03f08191'/>
<id>urn:sha1:ae00d334c6222fa9716135967a7c512b03f08191</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implemented set.discard</title>
<updated>2014-01-12T16:39:39+00:00</updated>
<author>
<name>John R. Lenton</name>
<email>jlenton@gmail.com</email>
</author>
<published>2014-01-12T16:39:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=2a24172cdcdb5286c48afd6cf726548848e4840f'/>
<id>urn:sha1:2a24172cdcdb5286c48afd6cf726548848e4840f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implemented set.clear</title>
<updated>2014-01-12T15:44:26+00:00</updated>
<author>
<name>John R. Lenton</name>
<email>jlenton@gmail.com</email>
</author>
<published>2014-01-12T15:44:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=1d7fb2f21be8dd6f95e5889442a3735464c94dfb'/>
<id>urn:sha1:1d7fb2f21be8dd6f95e5889442a3735464c94dfb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improved type/class/instance code; mp_obj_type_t now has load_attr, store_attr.</title>
<updated>2014-01-09T20:57:50+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-01-09T20:57:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=062478e66d03cc59ed73484a3032ef5f08db12a4'/>
<id>urn:sha1:062478e66d03cc59ed73484a3032ef5f08db12a4</id>
<content type='text'>
Creating of classes (types) and instances is much more like CPython now.
You can use "type('name', (), {...})" to create classes.
</content>
</entry>
</feed>
