Congratulations and Many Thanks! 
The new web2py is my best birthday gift. 
Cheers!

On Friday, August 31, 2012 5:59:43 PM UTC-4, Massimo Di Pierro wrote:
>
> web2py 2.0.5 is out.
> All known backward compatibility issues should be fixed but continue 
> testing... thank you for your patience.
>
> 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).nested_select(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
>>
>

-- 



Reply via email to