Hello,

Here is the latest Caml Weekly News, for the week of September 12 to 19, 2006.

1) Seeking functional programmer for commercial position - Galois Connections
2) Passing class type as parameter?
3) SafeUnmarshal: questions/problems/timings
4) On cmxa files
5) version 3.09.3 is out

========================================================================
1) Seeking functional programmer for commercial position - Galois Connections Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/ 929322b9f67e6904/df362753b90aa147#df362753b90aa147>
------------------------------------------------------------------------
** isaac jones announced:

I hope this posting is appropriate for the email list.  I got some
advice on the #ocaml IRC channel that it would be fine :)
Galois is seeking a full-time candidate for software development and
systems integration in the field of high assurance computing.  A
successful candidate should have a good understanding of the
inner workings of databases, good development skills in a number of
languages, including at least one functional language (preferably
Haskell), and web development.  The candidate should have excellent
Linux and Unix skills.  If the candidate does not know Haskell, they
should be good at learning new programming languages, and can
reasonably expect to be fluent in Haskell within a few months.

Tasks:
* Database analysis
* Python and PHP web development
* Learning and adapting Linux-related technologies including Xen,
   SELinux, and Knoppix
* Creating or modifying Debian packages
* Haskell development

Knowledge:
* Databases implementation internals
* Web development, Services-Oriented Architectures
* Fluent in Haskell or other functional languages
* Grounding in computer security
* XML
* Linux and Unix

Nice-to-have:
* Extreme Programming (XP) development experience
* Experience deploying software products
* Open source software development experience
* Ability to get US security clearance

Education:
* Masters degree or equivilent experience

Please respond with a resume and a cover letter explaining your fit to
[EMAIL PROTECTED]  Feel free to forward to interested parties.
                        
========================================================================
2) Passing class type as parameter?
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/ bca0e4c6d973bd76/1ea9245685d9fa02#1ea9245685d9fa02>
------------------------------------------------------------------------
** Jeremy Cowgar asked and Jacques Garrigue answered:

> Can I do something like:
> class base_model = object(self)
>    method from_array ary = ...
> end ;;

> class user = object(self)
>    inherit base_model
>    ...
> end ;;

> let finder sql class_type =
>    query_database sql ;
>    let res = new class_type in
>      res#from_array res ;;

> let users = finder "SELECT * FROM users" user in
>    xxx yyy ;;

> Ok. That is not working code, prob has syntax errors as well, but you
> get my idea. The problem I am having is passing the class to the
> generic finder method.


No, you can't, but you can pass the class constructor in place, which
is just equivalent.
let finder sql class_new =
   query_database sql ;
   let res = class_new () in
     res#from_array res ;;

let users = finder "SELECT * FROM users" (fun () -> new user) in
   xxx yyy ;;

Note that in general the class constructor takes arguments, so you
don't need the above anonymous function.
                        
========================================================================
3) SafeUnmarshal: questions/problems/timings
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/ e196570c6f57eed2/f7435afe2b01c624#f7435afe2b01c624>
------------------------------------------------------------------------
** Hendrik Tews said:

Here is the promised followup with more details on the slow safe
unmarshalling. On
<http://www.cs.ru.nl/~tews/nsUnicodeToTeXCMRt1.i.oast> you can
download 281 KB of marshalled data. On my machine it takes 23
seconds to check with native code.

The data is of type

annotated translationUnit_type = annotated * annotated topForm_type list

You can test it with the following piece of code:

open Cc_ast_gen_type
open Ast_annotation

let file = "/home/tews/src/elsa/elsa/in/big/nsUnicodeToTeXCMRt1.i.oast"
;;

try
  SafeUnmarshal.from_channel
    [^ annotated translationUnit_type ^]
    (open_in file);
  print_endline "OK"
with
  | _ -> print_endline "FAIL"

compile with

ocamlopt.opt safeUnmarshal.cmxa ast_annotation.ml elsa_util.ml \ ml_ctype.ml cc_ml_types.ml cc_ast_gen_type.ml justunmarshal.ml

The additional files are from Olmar, get them here:


<http://www.sos.cs.ru.nl/cgi-bin/~tews/olmar/viewvc-patch.cgi/elsa/ elsa/ast_annotation.ml?revision=olmar-release-2006-09-07> <http://www.sos.cs.ru.nl/cgi-bin/~tews/olmar/viewvc-patch.cgi/elsa/ elsa/elsa_util.ml?revision=olmar-release-2006-09-07> <http://www.sos.cs.ru.nl/cgi-bin/~tews/olmar/viewvc-patch.cgi/elsa/ elsa/ml_ctype.ml?revision=olmar-release-2006-09-07> <http://www.sos.cs.ru.nl/cgi-bin/~tews/olmar/viewvc-patch.cgi/elsa/ elsa/cc_ml_types.ml?revision=olmar-release-2006-09-07> <http://www.sos.cs.ru.nl/cgi-bin/~tews/olmar/viewvc-patch.cgi/elsa/ elsa/cc_ast_gen_type.ml?revision=olmar-release-2006-09-07>

To produce graphs like <http://www.cs.ru.nl/~tews/marshal-plot.eps>
you need to download Olmar, compile it and then
- ./regrtest -ocaml  in subdir elsa
- ./regtest-oast | grep time >data in subdir asttools
- gnuplot plot

where the plot file is something like

reset

set grid
unset mouse
set terminal x11 persist
#set terminal postscript enhanced color

set xlabel "size (Bytes)"
set ylabel "time (s)"
set key left

z = 2.1

plot "data" using 6:3 title "SafeUnmarshal user time", \
        (0.000017088 * x) ** 2.1
                        
========================================================================
4) On cmxa files
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/ 945e1328494273d/952cdfdeb7627407>
------------------------------------------------------------------------
** Chris King asked and Jacques Garrigue answered:

> I remember hearing somewhere that by exposing .cmx files, the compiler > is able to inline across module boundaries, and thus distributing .cmx
> files is desirable.  Is this just a myth?  It seems redundant since
> the .cmx files are included in the .cmxa anyway.

This is a frequent confusion. The .cmxa does not contain all the
information from the .cmx, in particular not the inlining
information. This is natural if you think of it: when you compile a
module, you have no way to know in which library are its dependencies,
so you can only look for .cmx's, not for .cmxa's. The .cmxa's are only
used at link time.
You can still compile without the .cmx's, but you loose the
optimizations.
                        
========================================================================
5) version 3.09.3 is out
Archive: <http://groups.google.com/group/fa.caml/browse_thread/thread/ 1eabdb2bc45af369/2bc2a976d5257645#2bc2a976d5257645>
------------------------------------------------------------------------
** Damien Doligez announced:

It is our pleasure to announce the release of OCaml version 3.09.3.
This is mainly a bug-fix release, see the list of changes below.

It is available at the following URL:
<http://caml.inria.fr/download.en.html>

Happy hacking,

-- Damien Doligez for the OCaml team.

Objective Caml 3.09.3:
----------------------

Bug fixes:
- ocamldoc: -using modtype constraint to filter module elements
displayed
     in doc PR#4016
- ocamldoc: error in merging of top dependencies of modules PR#4007
- ocamldoc: -dot-colors has no effect PR#3981
- ocamdloc: missing crossref in text from intro files PR#4066
- compilers: segfault with recursive modules PR#4008
- compilers: infinite loop when compiling objects PR#4018
- compilers: bad error message when signature mismatch PR#4001
- compilers: infinite loop with -rectypes PR#3999
- compilers: contravariance bug in private rows
- compilers: unsafe cast with polymorphic exception PR#4002
- native compiler: bad assembly code generated for AMD64 PR#4067
- native compiler: stack alignment problems on MacOSX/i386 PR#4036
- stdlib: crash in marshalling PR#4030
- stdlib: crash when closing a channel twice PR#4039
- stdlib: memory leak in Sys.readdir PR#4093
- C interface: better definition of CAMLreturn PR#4068
- otherlibs/unix: crash in gethostbyname PR#3043
- tools: subtle problem with unset in makefile PR#4048
- camlp4: install pa_o_fast.o PR#3812
- camlp4: install more modules PR#3689

New features:
- ocamldoc: name resolution in cross-referencing {!name}: if name is not
     found, then it is searched in the parent module/class, and in
the parent
     of the parent, and so on until it is found.
- ocamldoc: new option -short-functors to use a short form to display
     functors in html generator PR#4017
- ocamlprof: added "-version" option
                        
========================================================================
Using folding to read the cwn in vim 6+
------------------------------------------------------------------------
Here is a quick trick to help you read this CWN if you are viewing it using
vim (version 6 or greater).

:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^=\\{78}$'?'<1':1
zM
If you know of a better way, please let me know.

========================================================================
Old cwn
------------------------------------------------------------------------

If you happen to miss a CWN, you can send me a message
([EMAIL PROTECTED]) and I'll mail it to you, or go take a look at
the archive (<http://alan.petitepomme.net/cwn/>) or the RSS feed of the
archives (<http://alan.petitepomme.net/cwn/cwn.rss>). If you also wish
to receive it every week by mail, you may subscribe online at
<http://lists.idyll.org/listinfo/caml-news-weekly/> .

========================================================================


--
Alan Schmitt <http://alan.petitepomme.net/>

The hacker: someone who figured things out and made something cool happen.
.O.
..O
OOO


Attachment: PGP.sig
Description: This is a digitally signed message part

_______________________________________________
caml-news-weekly mailing list
caml-news-weekly@lists.idyll.org
http://lists.idyll.org/listinfo/caml-news-weekly

Reply via email to