2008/8/22 Fredrik Lundh &lt;<a href="mailto:fredrik@pythonware.com">fredrik@pythonware.com</a>&gt;:<br>&gt; On Fri, Aug 22, 2008 at 4:59 PM, Guido van Rossum &lt;<a href="mailto:guido@python.org">guido@python.org</a>&gt; wrote:<br>
&gt;<br>&gt;&gt;&gt; (how&#39;s the 3.2/4.1 dual support implemented? &nbsp;do we have two distinct<br>&gt;&gt;&gt; datasets, or are the differences encoded in some clever way? &nbsp;would it<br>&gt;&gt;&gt; make sense to split the unicodedata module into three separate<br>
&gt;&gt;&gt; modules, one for each major Unicode version?)<br>&gt;&gt;<br>&gt;&gt; The current API looks fine to me: unicodedata is the latest version<br>&gt;&gt; whereas unicodedata.ucd_3_2_0 is the older version. The APIs are the<br>
&gt;&gt; same; there&#39;s a tiny bit of code in the generated _db.h file that<br>&gt;&gt; expresses the differences:<br>&gt;&gt;<br>&gt;&gt; static const change_record* get_change_3_2_0(Py_UCS4 n)<br>&gt;&gt; {<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;int index;<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;if (n &gt;= 0x110000) index = 0;<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;else {<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index = changes_3_2_0_index[n&gt;&gt;7];<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index = changes_3_2_0_data[(index&lt;&lt;7)+(n &amp; 127)];<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;}<br>&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;return change_records_3_2_0+index;<br>&gt;&gt; }<br>&gt;<br>&gt; there&#39;s a bunch of data tables as well, but they don&#39;t seem to be very<br>&gt; large. &nbsp;looks like Martin did a thorough job here.<br>
&gt;<br>&gt; ... digging digging digging ...<br>&gt;<br>&gt; yes, the generator script produces difference tables between the main<br>&gt; version and a list of older versions. &nbsp;I&#39;d say it&#39;s worth running the<br>&gt; script on the 5.1.0 tables, and if it doesn&#39;t choke, compare the<br>
&gt; resulting table with the corresponding table for 4.1.0 (a simple loop<br>&gt; fetching the main properties for all code points). &nbsp;if the differences<br>&gt; look reasonably small, switch 5.1.0 and keep the others.<br>
<br>Right, that&#39;s my hope as well. I believe the changes between 3.2 and 4.1 were much larger than more recent changes. (Yay convergence! :-)<br><br>&gt; I can tinker a little with this over the weekend, unless Martin tells<br>
&gt; me not to ;-)<br><br>That would be great!<br><br>-- <br>--Guido van Rossum (home page: <a href="http://www.python.org/~guido/">http://www.python.org/~guido/</a>)<br><br>