Here is the latest Caml Weekly News, for the week of October 18 to 25, 2011.
Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-10/msg00101.htmlDavid Allsopp asked and Maxence Guesdon suggested:
> I have a slightly strange piece of re-tagging to do to some MP3s and was > having a quick look to see if there were any OCaml libraries/bindings for > reading and writing ID3v1 and ID3v2 tags. > > A cursory glance revealed MP3tags on the hump but its dependencies seem to > be out of date and it wasn't clear that I'd be able to build it in a newer > ocaml because of camlp4 problems... > > Can anyone recommend a library? You can give a try to mp3tag: http://www.nongnu.org/mp3tag/ I just commited a compilation fix to use lablgtk-extras library. You must checkout the CVS trunk: cvs -z3 -d:pserver:anonymous AT cvs.savannah.nongnu.org:/sources/mp3tag co mp3tagRomain Beauxis also suggested:
For not too particular id3 uses, ocaml-taglib is up-to date and functional: http://savonet.sourceforge.net/modules/ocaml-taglib/Taglib.html
Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-10/msg00107.htmlDiego Olivier Fernandez Pons asked:
Gabriel and Gerd gave very good advice already, but here are my two cents: - Beware of premature optimizations. It could very well be that your naive interpreter is already fast enough for your applications. Test and profile to find hot spots. - Pay special attention to your data structures, e.g. environments should be maps, not A-lists. A good trick is to hash-cons identifiers into unique integers: not only comparisons are much faster, but you can use Patricia trees for your environments. - Compiling to bytecode is probably overkill.Diego Olivier Fernandez Pons then said and Jérémie Dimino replied:
> I was rather thinking of translating on-the-fly into Caml code and letting > Caml do the job. Is that technically possible (rewriting a toplevel ? a > CamlP4 grammar ?). If so guess I would have to license the Caml compiler > from the INRIA. You can link with the toplevellib and use the Toploop module which provides functions for executing an OCaml AST. To create the AST you can for example write a parser for your language with Camlp4 and translate it using the Camlp4_import module. Note that you still need to have standard library cmi's at runtime. Also you can only compile your interpreter in bytecode.Gerd Stolpmann also replied:
I don't think you need that, because you can load compiled OCaml code dynamically (look into the Dynlink library). This works with both bytecode and native code (in recent OCaml versions). This way you just invoke the compiler via the normal ocamlc or ocamlopt executable, and you don't need to change the compiler (for which you would need the license). If you prefer to include the OCaml compiler directly into your "interpreter", you probably get only a very small speedup when "loading" code (the overhead of spawning a new process is small). This is IMO only worth it if you load code very frequently.
Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-10/msg00110.htmlCristiano Calcagno announced:
Monoidics Ltd (www.monoidics.com), a high-tech SME specialising in automatic formal verification and producer of the INFER static analyzer is looking for a Research Engineer (3 years) to work on the EU Strep project CARP (Correct and Efficient Accelerator Programming), funded by the European Union. Other partners in the project are Imperial College, UK; Realeyes, Estonia; ARM, UK; RTWH Aachen, Germany; University of Twente, The Netherland; ENS, France and Rightware, Finland. Within the context of the CARP project, the research engineer will work on the development of tools and techniques for logic-based verification/static analysis for accelerator programming. Qualifications and Skills required: - PhD degree in Computer Science (or an equivalent qualification). - strong programming skills (in particular OCaml, but also C/C++/Java/system programming/embedded) - good background knowledge of static analysis, verification, concurrency, logic, compilers and formal methods. Starting date: December 1st, 2011, or as soon as possible thereafter. Location: London, UK Salary: Competitive For further information contact: Dr. Dino Distefano (dino.distefano AT monoidics.com) =============================================================== About Monoidics: Monoidics is a high-tech SME specialising in automatic formal verification and analysis of software. Founded in the beginning of 2009 by a group of computer scientists from London and Cambridge, Monoidics designs automatic verification technology for safety critical industrial software. Monoidics' mission is to bring verification and program analysis research to the forefront of industrial practice. Based in London, Monoidics operates world-wide and has strong links with key industrial players in safety critical systems in Europe, USA, and Japan. =============================================================== About the CARP project: In recent years, massively parallel accelerator processors, primarily GPUs, have become widely available to end-users. Accelerators offer tremendous compute power at a low cost, and tasks such as media processing, simulation, medical imaging and eye-tracking can be accelerated to beat CPU performance by orders of magnitude. Performance is gained in energy efficiency and execution speed, allowing intensive media processing software to run in low-power consumer devices. Accelerators present a serious challenge for software developers. A system may contain one or more of the plethora of accelerators on the market, with many more products anticipated in the immediate future. Applications must exhibit portable correctness, operating correctly on any configuration of accelerators, and portable performance, exploiting processing power and energy efficiency offered by a wide range of devices. The overall aims of CARP are to design techniques and tools for correct and efficient accelerator programming: - Novel & attractive methods for constructing system-independent accelerator programs - Advanced code generation techniques to produce highly optimised system-specific code from system-independent programs - Scalable static techniques for analysing system-independent and system-specific accelerator programs, both qualitatively and quantitatively.
If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.
If you also wish to receive it every week by mail, you may subscribe online.