From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 35D28BC57 for ; Fri, 14 May 2010 15:30:10 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AosEAPvs7EvRVdQ0emdsb2JhbACDGJl5ZQgVAQEUJAMfq3ABPYIAhQguiE0BAQMFhB5tBIM+ X-IronPort-AV: E=Sophos;i="4.53,229,1272837600"; d="scan'208";a="51170959" Received: from mail-vw0-f52.google.com ([209.85.212.52]) by mail2-smtp-roc.national.inria.fr with ESMTP; 14 May 2010 15:30:09 +0200 Received: by vws10 with SMTP id 10so802797vws.39 for ; Fri, 14 May 2010 06:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=2TAFKhC+n86fjpysIawoBOVJdv30PIcM+MHVPQjgeSs=; b=uHyvQdKnoao/hFEaKA+qZAXZYBeiF0fjKZIUJ3DmC88nnvt4nghMtrfhvgcpstpfQc 2t0EMY1bUNLQroZkPzfPtL8XG1MukPZia+N5V15v8xxgknolm7JiUaOlzmjQayB4yqdi wz6O+GNxTrdEIfgh1VyBC4ySNAhRYR/Ruy5Lw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=VjtKCsasFZ2Er9C/5hniXXiM6ez2ALKhXmjDtY832hiIRIszBsY01ix68ICL+qztyl ESnYQQnVKAEvrXRBD5pum52bJFY1MMGMSBHIsLqXDYBuawQO1xx2ohDwKYJ0NLhQLKWa XkwVLRBQEH1ouKgVLLyfoVzxk/nKama8Ug/NU= MIME-Version: 1.0 Received: by 10.220.63.5 with SMTP id z5mr519742vch.186.1273843808433; Fri, 14 May 2010 06:30:08 -0700 (PDT) Received: by 10.220.112.3 with HTTP; Fri, 14 May 2010 06:30:08 -0700 (PDT) In-Reply-To: References: Date: Fri, 14 May 2010 22:30:08 +0900 Message-ID: Subject: Re: [Caml-list] Re: [ANN] Camomile 0.7.3 From: Yoriyuki Yamagata To: Dmitry Bely Cc: OCaml mailing list Content-Type: multipart/alternative; boundary=90e6ba8e4d5ab3778d04868ddfc7 X-Spam: no; 0.00; camomile:01 yoriyuki:01 yamagata:01 yoriyuki:01 camomile:01 compilation:01 hashtable:01 marshaled:01 functors:01 functor:01 bigarray:01 pointer:01 yamagata:01 compilation:01 hashtable:01 X-Attachments: cset="ISO-2022-JP" --90e6ba8e4d5ab3778d04868ddfc7 Content-Type: text/plain; charset=ISO-8859-1 Hi, Bely. 2010/5/14 Dmitry Bely > How "heavy-weight" is Camomile? I was a bit scared with the size of > its distribution. Currently I use under Windows the following my own > simple Unicode-support module (implemented via > WideCharToMultiByte/MultiByteToWideChar Win32 API functions). Maybe > it's time to switch to Camomile? > > The size of the package is due to mapping tables of character encoding and localization data. they occupy several mega bytes on the disk but it is nothing by today's standard. If you still care, you can delete any .mar files in charmaps, locales, mappings directory. (Deleting source files in these directory is not recommended, since it could cause a failure of compilation.) If you delete such files, related encoding and locales do not function, but other functionality is intact. As for memory consumption, character mapping tables and localization data are loaded to the memory when they are required. So if you do not use them, they are dead on the disk. After being loaded to the memory, they are retained by weak hashtable, therefore, when they are no longer used, GC releases them. Some modules load data from database directory during initialization. They persists the end of the execution, but these data are usually small (mostly some kilobytes in the marshaled form, only allkey.mar which used in uCol module is >100k bytes (*)). You can avoid loading them by not linking these modules. Finally, the programming style to use Camomile would be a bit heavy, since Camomile uses functors a lot. In fact, the library itself is a functor which takes modules containing initialization parameters. Heaviness aside, Camomile does not provide OS integration, which might be a problem for you. I tried POSIX integration but abandoned it by the reason which I no longer remember :-) But, you can use UTF16 module to access wch array, since Windows wch is a 16-bit integer. (UTF16.t is 16-bit integer array implemented in bigarray module. (*) I noticed allkey.mar can be retained by weak pointer as well (currently, it is held in Lazy.t). I will fix it in the next release, maybe. Feel free to ask further questions. I would be grad to answer them. Best, -- Yoriyuki Yamagata yoriyuki.y@gmail.com --90e6ba8e4d5ab3778d04868ddfc7 Content-Type: text/html; charset=ISO-2022-JP Content-Transfer-Encoding: base64 SGksIEJlbHkuPGJyPjxicj4yMDEwLzUvMTQgRG1pdHJ5IEJlbHkgPHNwYW4gZGlyPSJsdHIiPiZs dDs8YSBocmVmPSJtYWlsdG86ZG1pdHJ5LmJlbHlAZ21haWwuY29tIj5kbWl0cnkuYmVseUBnbWFp bC5jb208L2E+Jmd0Ozwvc3Bhbj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxibG9ja3F1 b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjogMHB0IDBwdCAwcHQgMC44ZXg7 IGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nLWxlZnQ6 IDFleDsiPgpIb3cgJnF1b3Q7aGVhdnktd2VpZ2h0JnF1b3Q7IGlzIENhbW9taWxlPyBJIHdhcyBh IGJpdCBzY2FyZWQgd2l0aCB0aGUgc2l6ZSBvZjxicj4KaXRzIGRpc3RyaWJ1dGlvbi4gQ3VycmVu dGx5IEkgdXNlIHVuZGVyIFdpbmRvd3MgdGhlIGZvbGxvd2luZyBteSBvd248YnI+CnNpbXBsZSBV bmljb2RlLXN1cHBvcnQgbW9kdWxlIChpbXBsZW1lbnRlZCB2aWE8YnI+CldpZGVDaGFyVG9NdWx0 aUJ5dGUvTXVsdGlCeXRlVG9XaWRlQ2hhciBXaW4zMiBBUEkgZnVuY3Rpb25zKS4gTWF5YmU8YnI+ Cml0JiMzOTtzIHRpbWUgdG8gc3dpdGNoIHRvIENhbW9taWxlPzxicj48YnI+PC9ibG9ja3F1b3Rl PjxkaXY+PGJyPlRoZSBzaXplIG9mIHRoZSBwYWNrYWdlIGlzIGR1ZSB0byBtYXBwaW5nIHRhYmxl cyBvZiBjaGFyYWN0ZXIgZW5jb2RpbmcgYW5kIGxvY2FsaXphdGlvbiBkYXRhLiZuYnNwOyB0aGV5 IG9jY3VweSBzZXZlcmFsIG1lZ2EgYnl0ZXMgb24gdGhlIGRpc2sgYnV0IGl0IGlzIG5vdGhpbmcg YnkgdG9kYXkmIzM5O3Mgc3RhbmRhcmQuJm5ic3A7IElmIHlvdSBzdGlsbCBjYXJlLCB5b3UgY2Fu IGRlbGV0ZSBhbnkgLm1hciBmaWxlcyBpbiBjaGFybWFwcywgbG9jYWxlcywgbWFwcGluZ3MgZGly ZWN0b3J5LiZuYnNwOyAoRGVsZXRpbmcgc291cmNlIGZpbGVzIGluIHRoZXNlIGRpcmVjdG9yeSBp cyBub3QgcmVjb21tZW5kZWQsIHNpbmNlIGl0IGNvdWxkIGNhdXNlIGEgZmFpbHVyZSBvZiBjb21w aWxhdGlvbi4pJm5ic3A7IElmIHlvdSBkZWxldGUgc3VjaCBmaWxlcywgcmVsYXRlZCBlbmNvZGlu ZyBhbmQgbG9jYWxlcyBkbyBub3QgZnVuY3Rpb24sIGJ1dCBvdGhlciBmdW5jdGlvbmFsaXR5IGlz IGludGFjdC48YnI+Cjxicj5BcyBmb3IgbWVtb3J5IGNvbnN1bXB0aW9uLCBjaGFyYWN0ZXIgbWFw cGluZyB0YWJsZXMgYW5kIGxvY2FsaXphdGlvbiBkYXRhIGFyZSBsb2FkZWQgdG8gdGhlIG1lbW9y eSB3aGVuIHRoZXkgYXJlIHJlcXVpcmVkLiZuYnNwOyBTbyBpZiB5b3UgZG8gbm90IHVzZSB0aGVt LCB0aGV5IGFyZSBkZWFkIG9uIHRoZSBkaXNrLiZuYnNwOyBBZnRlciBiZWluZyBsb2FkZWQgdG8g dGhlIG1lbW9yeSwgdGhleSBhcmUgcmV0YWluZWQgYnkgd2VhayBoYXNodGFibGUsIHRoZXJlZm9y ZSwgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgdXNlZCwgR0MgcmVsZWFzZXMgdGhlbS48YnI+Cjxi cj5Tb21lIG1vZHVsZXMgbG9hZCBkYXRhIGZyb20gZGF0YWJhc2UgZGlyZWN0b3J5IGR1cmluZyBp bml0aWFsaXphdGlvbi4mbmJzcDsgVGhleSBwZXJzaXN0cyB0aGUgZW5kIG9mIHRoZSBleGVjdXRp b24sIGJ1dCB0aGVzZSBkYXRhIGFyZSB1c3VhbGx5IHNtYWxsIChtb3N0bHkgc29tZSBraWxvYnl0 ZXMgaW4gdGhlIG1hcnNoYWxlZCBmb3JtLCBvbmx5IGFsbGtleS5tYXIgd2hpY2ggdXNlZCBpbiB1 Q29sIG1vZHVsZSBpcyAmZ3Q7MTAwayBieXRlcyAoKikpLiZuYnNwOyBZb3UgY2FuIGF2b2lkIGxv YWRpbmcgdGhlbSBieSBub3QgbGlua2luZyB0aGVzZSBtb2R1bGVzLiZuYnNwOyA8YnI+CiZuYnNw Ozxicj5GaW5hbGx5LCB0aGUgcHJvZ3JhbW1pbmcgc3R5bGUgdG8gdXNlIENhbW9taWxlIHdvdWxk IGJlIGEgYml0IGhlYXZ5LCBzaW5jZSBDYW1vbWlsZSB1c2VzIGZ1bmN0b3JzIGEgbG90LiZuYnNw OyBJbiBmYWN0LCB0aGUgbGlicmFyeSBpdHNlbGYgaXMgYSBmdW5jdG9yIHdoaWNoIHRha2VzIG1v ZHVsZXMgY29udGFpbmluZyBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzLiA8YnI+PGJyPkhlYXZp bmVzcyBhc2lkZSwgQ2Ftb21pbGUgZG9lcyBub3QgcHJvdmlkZSBPUyBpbnRlZ3JhdGlvbiwgd2hp Y2ggbWlnaHQgYmUgYSBwcm9ibGVtIGZvciB5b3UuJm5ic3A7IEkgdHJpZWQgUE9TSVggaW50ZWdy YXRpb24gYnV0IGFiYW5kb25lZCBpdCBieSB0aGUgcmVhc29uIHdoaWNoIEkgbm8gbG9uZ2VyIHJl bWVtYmVyIDotKSZuYnNwOyBCdXQsIHlvdSBjYW4gdXNlIFVURjE2IG1vZHVsZSB0byBhY2Nlc3Mg d2NoIGFycmF5LCBzaW5jZSBXaW5kb3dzIHdjaCBpcyBhIDE2LWJpdCBpbnRlZ2VyLjxicj4KIChV VEYxNi50IGlzIDE2LWJpdCBpbnRlZ2VyIGFycmF5IGltcGxlbWVudGVkIGluIGJpZ2FycmF5IG1v ZHVsZS4gPGJyPjxicj4oKikgSSBub3RpY2VkIGFsbGtleS5tYXIgY2FuIGJlIHJldGFpbmVkIGJ5 IHdlYWsgcG9pbnRlciBhcyB3ZWxsIChjdXJyZW50bHksIGl0IGlzIGhlbGQgaW4gTGF6eS50KS4m bmJzcDsgSSB3aWxsIGZpeCBpdCBpbiB0aGUgbmV4dCByZWxlYXNlLCBtYXliZS4mbmJzcDsgPGJy Pgo8YnI+RmVlbCBmcmVlIHRvIGFzayBmdXJ0aGVyIHF1ZXN0aW9ucy4mbmJzcDsgSSB3b3VsZCBi ZSBncmFkIHRvIGFuc3dlciB0aGVtLjxicj48YnI+QmVzdCwgPGJyPjwvZGl2PjwvZGl2Pi0tIDxi cj5Zb3JpeXVraRskQiEhGyhCWWFtYWdhdGE8YnI+PGEgaHJlZj0ibWFpbHRvOnlvcml5dWtpLnlA Z21haWwuY29tIj55b3JpeXVraS55QGdtYWlsLmNvbTwvYT48YnI+Cg== --90e6ba8e4d5ab3778d04868ddfc7--