It is called stable since no one using trunk/nightly build detected
those errors.
I agree with you, but you cannot blame anyone.
On Fri, Aug 31, 2012 at 1:44 PM, [email protected]
<mailto:[email protected]> <[email protected]
<mailto:[email protected]>> wrote:
First of all, I'd like to thank you all. You're making a great job,
guys.
I see web2py becoming more reliable to bigger projects and I'm very
pleased with it.
You all rock! :-)
In spite of this huge effort, isn't it premature to call 2.0.2 or
even 2.0.3 stable? I know there were several months of hard work,
but if we have bugs detected so fast, we cannot call it stable yet,
right?
Maybe some release candidate call or a pre-release period for tests,
before spreading it as stable would help us.
--
Vinicius Assef
On 08/30/2012 05:49 PM, Massimo Di Pierro wrote:
All bugs reported today have been fixed in 2.0.3 out now (except
a minor
issue with markmin that we are investigating).
If you find other issues, please continue report them. We'd
rather fix
them sooner rather than later.
Thanks for all your help and testing.
Massimo
On Wednesday, 29 August 2012 22:41:34 UTC-5, Massimo Di Pierro
wrote:
After 5 months. It is done. This is the most waited and the
most
feature-packed release.
I am sure we'll find some corners that need to be ironed
but it is
considerably better than 1.99.7. It adds lot of new
features and
improves many existing ones:
- 57,000 new lines of code and closed 279 issues since 1.99.7.
- Retrieving data from DB should be faster, in particular
select(cacheable=True)
- Has a new scheduler, a built-in wiki, new language and
pluralization system, better markmin with oembed support
and better
scaffolding app, increased security.
- Lots of experimental features including GIS support, mongodb
support, built-in auth.wiki(), and more.
Should be 100% backward compatible. If you run into any
issue let us
know ASAP.
I personally want to thank the major contributors to this
release
(in alphabetic order)
Alan, Andrew, Anthony, Bruno, Christian, Dave, Dominic,
Iceberg,
Jonathan, Marc, Mariano, Marin, Martin, Mark, Michael, Michele,
Niphlod, Patrick, Vladyslav,
They spend many nights testing, coding, debugging at a very
fast pace.
Many many people have contributed.
If your contribution has not been properly acknowledged
please let
us know ASAP. It is probably an oversight.
Massimo
Detailed changelog
===============
## 2.00.2
### DAL Improvements
- Support for DAL(lazy_tables=True) and
db.define_table(on_define=__lambda table:), thanks Jonathan
- db(...).select(cacheable=True) make select 30% faster
- db(...).select(cache=(cache.__ram,3600)) now caches
parsed data 100x
faster
- db(...).count(cache=(cache.__ram,3600)) now supported
- MongoDB support in DAL (experimental), thanks Mark Breedveld
- geodal and spatialite, thanks Denes and Fran (experimental)
- db.mytable._before_insert, _after_insert, _before_update,
_after_update, _before_delete. _after_delete (list of
callbacks)
- db(...).update_naive(...) same as update but ignores
table._before_update and table._after_update
- DAL BIGINT support and DAL(...,bigint_id=True)
- IS_IN_DB(..., distinct=True)
- new syntax:
db.mytable.insert(__myuploadfield=open(....)), thank you
Iceberg
- db(...).select(db.mytable.__myfield.count(distinct=True))
- db(db.a)._update(name=db(db.b.__a==db.a.id <http://db.a.id>
<http://db.a.id>).nested___select(db.b.id <http://db.b.id>
<http://db.b.id>))
- db.mytable.myfield.filter_in, filter_out
- db.mytable._enable_record___versioning(db) adds
versioning to this table
- teradata adapter, thanks Andrew Willimott
- experimental Sybase Adapter
- added db.table.field.avg()
- Support for Google App Engine projections, thanks Christian
- Field(... 'upload', default=path) now accepts a path to a
local
file as default value, if user does not upload a file.
Relative path
looks inside current application folder, thanks Marin
- executesql(...,fields=,__columns=) allows parsing of
results in
Rows, thanks Anthony
### Auth improvements
- auth.enable_record_versioning(__db) adds full versioning
to all tables
- @auth.requires_login(__otherwise=URL(...))
- auth supports salt and compatible with third party data,
thanks
Dave Stoll
- CRYPT now defaults to pbkdf2(1000,20,sha1)
- Built-in wiki with menu, tags, search, media,
permissions. def
index: return auth.wiki()
- auth.settings.everybody_group___id
- allow storage of uploads on any PyFileSystem (including
amazon)
### Form improvements
- FORM.confirm('Are you sure?',{'Back':URL(...)})
- SQLFORM.smartdictform(dict)
- form.add_button(value,link)
- SQLFORM.grid(groupby='...')
- fixed security issue with SQLFORM.grid and SQLFORM.smartgrid
- more export options in SQLFORM.grid and SQLFORM.smartgrid
(html,
xml, csv, ...)
### Admin improvements
- new admin pages: manage_students, bulk_regsiter, and
progress reports
- increased security in admin against CSRF
- experimental Git integration
- experimental OpenShift deployment
- multi-language pluralization engine
- ace text web editor in admin
- Ukrainian translations, thanks Vladyslav Kozlovskyy
- Romanian translation for welcome, thanks ionel
- support for mercurial 2.6, thanks Vlad
### Scheduler Improvements (thanks to niphlod, ykessler,
dhx, toomim)
- web2py.py -K myapp -X starts the myapp scheduler
alongside the
webserver
- tasks are marked EXPIRED (if stop_time passed)
- functions with no result don't end up in scheduler_run
- more options: web2py.py -E -b -L
- scheduler can now handle 10k tasks with 20 concurrent
workers and
with no issues
- new params:
tasks can be found in the environment (no need to
define the
tasks parameter)
max_empty_runs kills the workers automatically if no
new tasks
are found in queue (nice for "spikes" of processing power)
discard_results to completely discard the results (if
you don't
need the output of the task)
utc_time enables datetime calculations with UTC time
- scheduler_task changes:
task_name is no longer required (filled automatically with
function_name if found empty)
uuid makes easy to coordinate scheduler_task maintenance
(filled automatically if not provided)
stop_time has no default (previously was today+1)
retry_failed to requeue automatically failed tasks
sync_output refreshes automatically the output (nice
to report
percentages)
- workers can be:
DISABLED (put to sleep and do nothing if not sending the
heartbeat every 30 seconds)
TERMINATE (complete the current task and then die)
KILL (kill ASAP)
### Other Improvements
- gluon/contrib/webclient.py makes it easy to create functional
tests for app
- DIV(..).elements(...replace=..__.), thanks Anthony
- new layout based on Twitter Bootstrap
- New generic views: generic.ics (Mac Mail Calendar) and
generic.map
(Google Maps)
- request.args(0,default=0, cast=int, otherwise=URL(...)),
thanks
Anthony
- redirect(...,type='auto') will be handled properly in
ajax responses
- routes in can redirect outside with
routes_in=[('/path','303->__http://..')]
- better memcache support
- improved spreadsheet, thanks Alan
- new internationalization engine, thanks Vladyslav
- pluralization engine, thanks Vladyslav
- new markmin with support for nested lists, <i>, <em>,
autolinks,
thanks Vladyslav
- new syntax: {{=BR()*5}}
- gluon.cache.lazy_cache decorator allows caching functions
in modules
- .coffee and .less support in response.files, thanks Sam
Sheftel
- ldap certificate support
- pg8000 postgresql driver support (experimental)
- @cache('%(name)s%(args)s%(__vars)s',5) and cache.autokey
- added tox.ini, thanks Marc
- web2py.py --run_system_tests, thanks Marc Abramowitz
- html.py (and web2py helpers) can be used without web2py
dependencies
- new fpdf, thanks Mariano
--
--
--