Tue 29 July 2014

Mon 28 July 2014

[Logilab] EP14 Pylint sprint Day 2 and 3 reports


Here are the list of things we managed to achieve during those last two days at EuroPython.

After several attempts, Michal did manage to have pylint running analysis on several files in parallel. This is still in a pull request (https://bitbucket.org/logilab/pylint/pull-request/82/added-support-for-checking-files-in) because of some limitations, so we decided it won't be part of the 1.3 release.

Claudiu killed maybe 10 bugs or so and did some heavy issues cleanup in the trackers. He also demonstrated some experimental support of python 3 style annotation to drive a better inferece. Pretty exciting! Torsten also killed several bugs, restored python 2.5 compat (though that will needs a logilab-common release as well), introduced a new functional test framework that will replace the old one once all the existing tests will be backported. On wednesday, he did show us a near future feature they already have at Google: some kind of confidence level associated to messages so that you can filter out based on that. Sylvain fixed a couple of bugs (including https://bitbucket.org/logilab/pylint/issue/58/ which was boring all the numpy community), started some refactoring of the PyLinter class so it does a little less things (still way too much though) and attempted to improve the pylint note on both pylint and astroid, which did go down recently "thanks" to the new checks like 'bad-continuation'.

Also, we merged the pylint-brain project into astroid to simplify things, so you should now submit your brain plugins directly to the astroid project. Hopefuly you'll be redirected there on attempt to use the old (removed) pylint-brain project on bitbucket.

And, the good news is that now both Torsten and Claudiu have new powers: they should be able to do some release of pylint and astroid. To celebrate that and the end of the sprint, we published Pylint 1.3 together with Astroid 1.2. More on this here.

[Logilab] Pylint 1.3 / Astroid 1.2 released

The EP14 Pylint sprint team (more on this here and there) is proud to announce they just released Pylint 1.3 together with its companion Astroid 1.2. As usual, this includes several new features as well and bug fixes. You'll find below some structured list of the changes.

Packages are uploaded to pypi, debian/ubuntu packages should be soon provided by Logilab, until they get into the standard packaging system of your favorite distribution.

Please notice Pylint 1.3 will be the last release branch support python 2.5 and 2.6. Starting from 1.4, we will only support python greater or equal to 2.7. This will be the occasion to do some great cleanup in the code base. Notice this is only about the Pylint's runtime, you should still be able to run Pylint on your Python 2.5 code, through using Python 2.7 at least.

New checks

  • Add multiple checks for PEP 3101 advanced string formatting: 'bad-format-string', 'missing-format-argument-key', 'unused-format-string-argument', 'format-combined-specification', 'missing-format-attribute' and 'invalid-format-index'
  • New 'invalid-slice-index' and 'invalid-sequence-index' for invalid sequence and slice indices
  • New 'assigning-non-slot' warning, which detects assignments to attributes not defined in slots

Improved checkers

  • Fixed 'fixme' false positive (#149)
  • Fixed 'unbalanced-iterable-unpacking' false positive when encountering starred nodes (#273)
  • Fixed 'bad-format-character' false positive when encountering the 'a' format on Python 3
  • Fixed 'unused-variable' false positive when the variable is assigned through an import (#196)
  • Fixed 'unused-variable' false positive when assigning to a nonlocal (#275)
  • Fixed 'pointless-string-statement' false positive for attribute docstrings (#193)
  • Emit 'undefined-variable' when using the Python 3 metaclass= argument. Also fix 'unused-import' false for that construction (#143)
  • Emit 'broad-except' and 'bare-except' even if the number of except handlers is different than 1. Fixes issue (#113)
  • Emit 'attribute-defined-outside-init' for all statements in the same module as the offended class, not just for the last assignment (#262, as well as a long standing output mangling problem in some edge cases)
  • Emit 'not-callable' when calling properties (#268)
  • Don't let ImportError propagate from the imports checker, leading to crash in some namespace package related cases (#203)
  • Don't emit 'no-name-in-module' for ignored modules (#223)
  • Don't emit 'unnecessary-lambda' if the body of the lambda call contains call chaining (#243)
  • Definition order is considered for classes, function arguments and annotations (#257)
  • Only emit 'attribute-defined-outside-init' for definition within the same module as the offended class, avoiding to mangle the output in some cases
  • Don't emit 'hidden-method' message when the attribute has been monkey-patched, you're on your own when you do that.

Others changes

  • Checkers are now properly ordered to respect priority(#229)
  • Use the proper mode for pickle when opening and writing the stats file (#148)

Astroid changes

  • Function nodes can detect decorator call chain and see if they are decorated with builtin descriptors (classmethod and staticmethod).
  • infer_call_result called on a subtype of the builtin type will now return a new Class rather than an Instance.
  • Class.metaclass() now handles module-level __metaclass__ declaration on python 2, and no longer looks at the __metaclass__ class attribute on python 3.
  • Add slots method to Class nodes, for retrieving the list of valid slots it defines.
  • Expose function annotation to astroid: Arguments node exposes 'varargannotation', 'kwargannotation' and 'annotations' attributes, while Function node has the 'returns' attribute.
  • Backported most of the logilab.common.modutils module there, as most things there are for pylint/astroid only and we want to be able to fix them without requiring a new logilab.common release
  • Fix names grabed using wildcard import in "absolute import mode" (i.e. with absolute_import activated from the __future__ or with python 3) (pylint issue #58)
  • Add support in brain for understanding enum classes.

Fri 25 July 2014

[Adacore] Support for hash based message authentication codes

The packages providing standard hash functions (MD5, SHA1, SHA224, SHA256, SHA384, and SHA512) now also support the computation of the corresponding HMACs. This is achieved by initializing the context with HMAC_Initial_Context instead of the default Initial_Context.

[Adacore] Reject derived types with new discriminants

SPARK does not allow defining discriminants on a type deriving from a discriminated type (SPARK RM 3.7(2)). Discriminants should be inherited in that case. This is now correctly detected and rejected.

Thu 24 July 2014

[Adacore] AdaCore Releases GNAT GPL for Bare Board ARM

Freely available toolsuite brings power of Ada language to global ARM ecosystem

NEW YORK and PARIS, (July 24, 2014) – AdaCore today released a freely downloadable version of its GNAT GPL Ada cross-development environment for Bare Board ARM Cortex processors. Students, professors and other developers of non-proprietary software can now exploit Ada 2012’s reliability, safety and security benefits for ARM applications.

GNAT GPL for Bare Board ARM Cortex processors provides a complete Ada 2012 development environment, including a comprehensive tool-chain and GPS, AdaCore’s flagship Integrated Development Environment (IDE). It also includes a fully configurable/customizable run-time library consisting of the “Small Footprint” (SFP) and Ravenscar profiles that are particularly relevant to safety-critical systems. The SFP profile corresponds to a language subset with minimal GNAT run-time routines, and the Ravenscar profile is a subset of the Ada concurrency features with an efficient, predictable, small-footprint implementation. The resulting Ada subset has expressive power well beyond that of other languages used for ARM-based devices.

“There are now billions of ARM processors in embedded systems, which has created a global ecosystem with many developers looking to take advantage of Ada’s strengths,” said Dr. Pat Rogers, AdaCore Bare Board product manager. “By making an Ada cross-development environment freely available to the academic and hobbyist communities, we are responding to this demand and see great potential for significantly increasing the overall usage of the Ada language. With powerful ARM-based boards currently available for under $20, this new GNAT GPL release becomes a cost-effective development environment for everyone.”

The release of GNAT GPL for Bare Board ARM is part of AdaCore’s ongoing commitment to the Ada community. Fully featured releases of the GNAT technology are already available for GNU Linux, Mac OS X, and Windows. 

"Finally, the substantial software engineering benefits of the Ada 2012 language are available for the huge ARM microcontroller family,” said Mike Silva, Software Engineer at the www.embeddedrelated.com community. “This is a ground-breaking achievement for the embedded programming world, offering the promise of higher quality embedded software delivered on shorter schedules."

“For our students, this is almost a game-changing new option, providing an academia-affordable, hands-on, high-integrity and fully real-world hardware/software environment for every individual student,” said Dr. rer. nat. Uwe R. Zimmer, Fellow at the Australian National University. “Tools which enable the combination of high-integrity, real-time systems with concrete, real-world hardware will open doors to dependable, physical systems for many more students.”

GNAT GPL for Bare Board ARM is available now from libre.adacore.com. The package includes a tutorial and example project showing how to use Ada and GPS for the “STM32F4 Discovery” (Cortex-M4) evaluation kit from STMicroelectronics.  Additional Ada tutorials can be accessed via AdaCore University.

About the GNAT Technology
GNAT is a robust, flexible, and open Ada development environment based on the GNU GCC compiler technology. It comprises a full Ada compiler (including complete support for Ada 2012), an Integrated Development Environment (GPS, the GNAT Programming Studio), a comprehensive toolset including a visual debugger, and a useful collection of libraries / bindings. GNAT allows development of pure Ada applications as well as Ada components in multi-language systems. It is distributed with complete source code and is available on a wide range of host environments for both native and cross-development, including UNIX, Windows and GNU/Linux.

All brand or product names are registered trademarks or trademarks of their respective holders.

AdaCore Press Contacts
Jamie Ayre




Rainier Communications (for AdaCore)

Jenna Beaucage
+1-508-475-0025 x124


[Logilab] EP14 Pylint sprint Day 1 report


We've had a fairly enjoyable and productive first day in our little hidden room at EuroPython in Berlin ! Below are some noticeable things we've worked on and discussed about.

First, we discussed and agreed that while we should at some point cut the cord to the logilab.common package, it will take some time notably because of the usage logilab.common.configuration which would be somewhat costly to replace (and is working pretty well). There are some small steps we should do but basically we should mostly get back some pylint/astroid specific things from logilab.common to astroid or pylint. This should be partly done during the sprint, and remaining work will go to tickets in the tracker.

We also discussed about release management. The point is that we should release more often, so every pylint maintainers should be able to do that easily. Sylvain will write some document about the release procedure and ensure access are granted to the pylint and astroid projects on pypi. We shall release pylint 1.3 / astroid 1.2 soon, and those releases branches will be the last one supporting python < 2.7.

During this first day, we also had the opportunity to meet Carl Crowder, the guy behind http://landscape.io, as well as David Halter which is building the Jedi completion library (https://github.com/davidhalter/jedi). Landscape.io runs pylint on thousands of projects, and it would be nice if we could test beta release on some part of this panel. On the other hand, there are probably many code to share with the Jedi library like the parser and ast generation, as well as a static inference engine. That deserves a sprint on his own though, so we agreed that a nice first step would be to build a common library for import resolution without relying on the python interpreter for that, while handling most of the python dark import features like zip/egg import, .pth files and so one. Indeed that may be two nice future collaborations!

Last but not least, we got some actual jobs done:

  • Michal Novikowsky from Intel in Poland joined us to work on the ability to run pylint in different processes so it may drastically improve performance on multiple cores box.
  • Torsten did continue some work on various improvements of the functionnal test framework.
  • Sylvain did merge logilab.common.modutils module into astroid as it's mostly driven by astroid and pylint needs. Also fixed the annoying namespace package crash.
  • Claudiu keep up the good work he does daily at improving and fixing pylint :)

[Adacore] TAP 2014

Jul 24-25, 2014 – York, UK

Yannick Moy and Johannes Kanig are presenting a paper - Explicit Assumptions - A Prenup for Marrying Static and Dynamic Program Verification.

[Adacore] GPS: animations in browsers

GPS now uses animations in the browsers (call graph, project,...) when items are moved from one position to another. This helps preserve the context.

[GTLL] Le Groupe Thématique Logiciel Libre mis à l’honneur par Silicon.fr et Le Monde Informatique

L’historique du GT LL : « Systematic : bilan et perspectives du soutien au logiciel libre »

Cet article revient sur les temps forts et les réalisations du GT LL depuis sa création

En savoir plus >>>


Le soutien apporté par le Pôle aux entreprises du Logiciel Libre : « Systematic met en lumière ses champions du monde Open Source »

Les projets phares labellisés du Groupe y sont présentés par le président du GT LL, Stéfane Fermigier

En savoir plus >>>




logiciel librestéfane fermigier

Wed 23 July 2014

[Adacore] Better proof for preservation of discriminants

The SPARK toolset now tracks non-mutable discriminants of record variables better, especially when the variables are modified in a loop or updated by a procedure call. This results in more proved verification conditions.

[Adacore] Use of SPARK_Mode in generics and instantiations

Aspect/pragma SPARK_Mode can now appear in generic units. The annotation is also applicable to generic instantiations.