<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>What&#39;s new in CubicWeb 3.15 (CubicWeb&#39;s Forge) RSS Feed</title>
    <description></description>
    <link>http://www.cubicweb.org/blogentry/2356443</link>
<item>
<guid isPermaLink="true">http://www.cubicweb.org/blogentry/2356443</guid>
  <title>What&#39;s new in CubicWeb 3.15</title>
  <link>http://www.cubicweb.org/blogentry/2356443</link>
  <description>&lt;p&gt;CubicWeb 3.15 introduces a bunch of new functionalities. In short (more details below):&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;ability to use &lt;a class=&quot;reference&quot; href=&quot;http://www.zeromq.org/&quot;&gt;ZMQ&lt;/a&gt; instead of &lt;a class=&quot;reference&quot; href=&quot;http://pypi.python.org/pypi/Pyro&quot;&gt;Pyro&lt;/a&gt; to connect to repositories&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://www.zeromq.org/&quot;&gt;ZMQ&lt;/a&gt; inter-instances messages bus&lt;/li&gt;
&lt;li&gt;new LDAP source using the datafeed approach, much more flexible than the legacy &#39;ldapuser&#39; source&lt;/li&gt;
&lt;li&gt;full undo support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus some refactorings regarding Ajax function calls, WSGI, the registry, etc. Read more for the detail.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;new-functionalities&quot;&gt;
&lt;h3&gt;&lt;a&gt;New functionalities&lt;/a&gt;&lt;/h3&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Add &lt;a class=&quot;reference&quot; href=&quot;http://www.zeromq.org/&quot;&gt;ZMQ&lt;/a&gt; server, based on the cutting edge &lt;a class=&quot;reference&quot; href=&quot;http://www.zeromq.org/&quot;&gt;ZMQ&lt;/a&gt; socket
library.  This allows to access distant instances, in a similar way as Pyro.&lt;/li&gt;
&lt;li&gt;Publish/subscribe mechanism using &lt;a class=&quot;reference&quot; href=&quot;http://www.zeromq.org/&quot;&gt;ZMQ&lt;/a&gt; for communication among cubicweb
instances.  The new zmq-address-sub and zmq-address-pub configuration variables
define where this communication occurs.  As of this release this mechanism is
used for entity cache invalidation.&lt;/li&gt;
&lt;li&gt;Improved WSGI support. While there are still some caveats, most of the code
which was &lt;a class=&quot;reference&quot; href=&quot;http://twistedmatrix.com&quot;&gt;twisted&lt;/a&gt; only is now generic and allows related functionalities to work
with a WSGI front-end.&lt;/li&gt;
&lt;li&gt;Full undo/transaction support: undo of modifications has finally been
implemented, and the configuration simplified (basically you activate it or not
on an instance basis).&lt;/li&gt;
&lt;li&gt;Controlling HTTP status code returns is now much easier:&lt;ul&gt;
&lt;li&gt;&lt;cite&gt;WebRequest&lt;/cite&gt; now has a &lt;cite&gt;status_out&lt;/cite&gt; attribute to control the response status ;&lt;/li&gt;
&lt;li&gt;most web-side exceptions take an optional &lt;tt class=&quot;docutils literal&quot;&gt;status&lt;/tt&gt; argument.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;api-changes&quot;&gt;
&lt;h3&gt;&lt;a&gt;API changes&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;The base registry implementation has been moved to a new
&lt;cite&gt;logilab.common.registry&lt;/cite&gt; module (see &lt;a class=&quot;reference&quot; href=&quot;http://www.cubicweb.org/ticket/1916014&quot;&gt;#1916014&lt;/a&gt;). This includes code from :&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;cite&gt;cubicweb.vreg&lt;/cite&gt; (everything that was in there)&lt;/li&gt;
&lt;li&gt;&lt;cite&gt;cw.appobject&lt;/cite&gt; (base selectors and all).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the process, some renaming was done:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;the top level registry is now &lt;cite&gt;RegistryStore&lt;/cite&gt; (was &lt;cite&gt;VRegistry&lt;/cite&gt;), but that
should not impact CubicWeb client code;&lt;/li&gt;
&lt;li&gt;former selectors functions are now known as &amp;quot;predicate&amp;quot;, though you still use
predicates to build an object&#39;selector;&lt;/li&gt;
&lt;li&gt;for consistency, the &lt;cite&gt;objectify_selector&lt;/cite&gt; decorator has hence been renamed to
&lt;cite&gt;objectify_predicate&lt;/cite&gt;;&lt;/li&gt;
&lt;li&gt;on the CubicWeb side, the &lt;cite&gt;selectors&lt;/cite&gt; module has been renamed to
&lt;cite&gt;predicates&lt;/cite&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debugging refactoring dropped the need for the &lt;cite&gt;lltrace&lt;/cite&gt; decorator.  There
should be full backward compat with proper deprecation warnings.  Notice the
&lt;cite&gt;yes&lt;/cite&gt; predicate and &lt;cite&gt;objectify_predicate&lt;/cite&gt; decorator, as well as the
&lt;cite&gt;traced_selection&lt;/cite&gt; function should now be imported from the
&lt;cite&gt;logilab.common.registry&lt;/cite&gt; module.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;All login forms are now submitted to &amp;lt;app_root&amp;gt;/login. Redirection to requested
page is now handled by the login controller (it was previously handled by the
session manager).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;&lt;cite&gt;Publisher.publish&lt;/cite&gt; has been renamed to &lt;cite&gt;Publisher.handle_request&lt;/cite&gt;. This
method now contains a generic version of the logic previously handled by
Twisted. &lt;cite&gt;Controller.publish&lt;/cite&gt; is &lt;strong&gt;not&lt;/strong&gt; affected.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;unintrusive-api-changes&quot;&gt;
&lt;h3&gt;&lt;a&gt;Unintrusive API changes&lt;/a&gt;&lt;/h3&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;New &#39;ldapfeed&#39; source type, designed to replace &#39;ldapuser&#39; source with
data-feed (i.e. copy based) source ideas.&lt;/li&gt;
&lt;li&gt;New &#39;zmqrql&#39; source type, similar to &#39;pyrorql&#39; but using ømq instead of Pyro.&lt;/li&gt;
&lt;li&gt;A new registry called &#39;services&#39; has appeared, where you can register
server-side &lt;cite&gt;cubicweb.server.Service&lt;/cite&gt; child classes. Their &lt;cite&gt;call&lt;/cite&gt; method can be
invoked from a web-side AppObject instance using the new &lt;cite&gt;self._cw.call_service&lt;/cite&gt;
method or a server-side one using &lt;cite&gt;self.session.call_service&lt;/cite&gt;. This is a new
way to call server-side methods, much cleaner than monkey patching the
Repository class, which becomes a deprecated way to perform similar tasks.&lt;/li&gt;
&lt;li&gt;a new &lt;cite&gt;ajaxfunction&lt;/cite&gt; registry now hosts all remote functions (i.e. functions
callable through the &lt;cite&gt;asyncRemoteExec&lt;/cite&gt; JS api). A convenience &lt;cite&gt;ajaxfunc&lt;/cite&gt;
decorator will let you expose your python functions easily without all the
appobject standard boilerplate. Backwards compatibility is preserved.&lt;/li&gt;
&lt;li&gt;the &#39;json&#39; controller is now deprecated in favor of the &#39;ajax&#39; one.&lt;/li&gt;
&lt;li&gt;&lt;cite&gt;WebRequest.build_url&lt;/cite&gt; can now take a __secure__ argument.  When True, cubicweb
tries to generate an https url.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;user-interface-changes&quot;&gt;
&lt;h3&gt;&lt;a&gt;User interface changes&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A new &#39;undohistory&#39; view exposes the undoable transactions and gives access to undo
some of them.&lt;/p&gt;
&lt;/div&gt;
</description>
  <dc:date>2012-06-19T10:34-01:00</dc:date>
  <dc:creator>Sylvain Thenault</dc:creator>
</item>
  </channel>
</rss>