<% header(name + ' 1.0 Release Notes') %>

<p><% name %> version 1.0 released on 11/29/08</p>

<a id="NewFeatures"></a><h2>New Features</h2>
<ul>
  <li>Given an attribute of type list with the name "bars", MK will now
  not only generate a Python method <code>addToBars()</code> for adding
  objects to the list, but also a method named <code>delFromBars()</code>
  that will make it easy for you to remove an existing object from the list
  (as suggested by Luke Holden in patch #670051).</li>
  <li>The SQLObjectStore method <code>executeSQL()</code> now can commit
  the SQL statement immediately if you pass in <code>commit=True</code>.
  This is helpful since the standard DB API <code>execute()</code> method
  does not commit automatically, and MySQLdb now follows the standard.</li>
  <li>A method <code>executeSQLTransaction()</code> has been added that
  executes and commits a sequence of SQL statements as a transaction.</li>
  <li>The MySQLObjectStore can now be created with a keyword parameter named
  <code>autocommit</code> that will reestablish the old behavior of MySQLdb
  of auto commiting every statement if you set to True. But note that by
  default there will now be no autocommit any more.</li>
</ul>

<a id="Improvements"></a><h2>Improvements and Refinements</h2>
<ul>
  <li>Added a lock for accessing the MiddleKit persistent store to avoid
  race conditions with multithreading (as suggested by Roger Haase).</li>
  <li>Do not allow attributes with some reserved names because they can
  lead to confusing error messages later (bug report #925481).</li>
</ul>

<a id="MinorChanges"></a><h2>Minor Changes</h2>
<ul>
  <li>The PostgreSQL SQL generator now generates DateTime attributes as
  timestamps <em>without</em> time zone. This is also the default in newer
  PostgreSQL versions and in MySQL. It is recommended to simply store all
  DateTimes as UTC.</li>
</ul>

<% footer() %>
