<font color="#330000"><font><font face="georgia,serif">Jens,</font></font></font><div><font color="#330000" face="georgia, serif"><br></font></div><div><font color="#330000" face="georgia, serif">Congratulations on the release of the bit64 package!  It sounds like it has many important technical advantages over the int64 package.  You also say:</font></div>
<div><font color="#330000" face="georgia, serif"><br></font></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>Package 'bit64' has the following advantages over package 'int64' (which was sponsored by Google):</div>
<div>...</div><div>- pure GPL, no copyrights from transnational commercial company</div></blockquote><div><font color="#330000" face="georgia, serif"><br></font></div><div><font color="#330000" face="georgia, serif">I am not sure I understand your point here.  <i>Every </i>piece of GPL software has copyright notices on it, based on who wrote it (in this case, Romain Francois) or who paid for writing it (apparently Google Inc. funded development and received a work for hire copyright).  The critical issue is not who holds the copyright, but what license the software is provided under.  The int64 package is just as much a "pure" GPL package as the bit64 package.</font></div>
<div><font color="#330000" face="georgia, serif"><br></font></div><div><font color="#330000" face="georgia, serif">The advantage to Google of having a copyright on the software is that Google can perhaps use it internally without being bound by the terms of the GPL (depending on their agreement with Francois), or license it to others under other licenses.  But of course you, as the author of bit64, can do exactly the same thing.</font></div>
<div><font color="#330000" face="georgia, serif"><br></font></div><div><font face="georgia, serif" color="#330000">As for "I happly donate the code and drop this package." -- by licensing your code under GPL, you have already given R Core the right to incorporate your package into R (which is itself licensed under GPL).</font></div>
<div><font color="#330000" face="georgia, serif"><br></font></div><div><font color="#330000" face="georgia, serif">               -s</font></div><div><font color="#330000" face="georgia, serif"><br></font></div><div><div>
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Package 'bit64' has the following advantages over package 'int64' (which was sponsored by Google):<br>

- true atomic vectors usable with length, dim, names etc.<br>
- only S3, not S4 class system used to dispatch methods<br>
- less RAM consumption by factor 7 (under 64 bit OS)<br>
- faster operations by factor 4 to 2000 (under 64 bit OS)<br>
- no slow-down of R's garbage collection (as caused by the pure existence of 'int64' objects)<br>
- pure GPL, no copyrights from transnational commercial company<br>
<br>
While the advantage of the atomic S3 design over the complicated S4 object design is obvious, it is less obvious that an external package is the best way to enrich R with 64bit integers. An external package will not give us literals such as 1LL or directly allow us to address larger vectors than possible with base R. But it allows us to properly address larger vectors in other packages such as 'ff' or 'bigmemory' and it allows us to properly work with large surrogate keys from external databases. An external package realizing just one data type also makes a perfect test bed to play with innovative performance enhancements. Performance tuned sorting and hashing are planned for the next release, which will give us fast versions of sort, order, merge, duplicated, unique, and table - for 64bit integers.<br>

<br>
For those who still hope that R's 'integer' will be 64bit some day, here is my key learning: migrating R's 'integer' from 32 to 64 bit would be RAM expensive. It would most likely require to also migrate R's 'double' from 64 to 128 bit - in order to again have a data type to which we can lossless coerce. The assumption that 'integer' is a proper subset of 'double' is scattered over R's semantics. We all expect that binary and n-ary functions such as '+' and 'c' do return 'double' and do not destroy information. With solely extending 64bit integers but not 128bit doubles, we have semantic changes potentially disappointing such expectations: integer64+double returns integer64 and does kill decimals. I did my best to make operations involving integer64 consistent and numerically stable - please consult the documentation at ?bit64 for details.<br>

<br>
Since this package is 'at risk' to create a lot of dependencies from other packages, I'd appreciate serious  beta-testing and also code-review, ideally from the R-Core team. Please check the 'Limitations' sections at the help page and the numerics involving "long double" in C. If the conclusion is that this should be better done in Base R - I happly donate the code and drop this package. If we have to go with an external package for 64bit integers, it would be great if this work could convince the Rcpp team including Romain about the advantages of this approach. Shouldn't we join forces here?<br>

<br>
Best regards<br>
<br>
Jens Oehlschlägel<br>
Munich, 21.2.2012<br>
<br>
______________________________<u></u>_________________<br>
R-packages mailing list<br>
<a href="mailto:R-packages@r-project.org" target="_blank">R-packages@r-project.org</a><br>
<a href="https://stat.ethz.ch/mailman/listinfo/r-packages" target="_blank">https://stat.ethz.ch/mailman/<u></u>listinfo/r-packages</a><br>
<br>
______________________________<u></u>________________<br>
<a href="mailto:R-help@r-project.org" target="_blank">R-help@r-project.org</a> mailing list<br>
<a href="https://stat.ethz.ch/mailman/listinfo/r-help" target="_blank">https://stat.ethz.ch/mailman/<u></u>listinfo/r-help</a><br>
PLEASE do read the posting guide <a href="http://www.R-project.org/posting-guide.html" target="_blank">http://www.R-project.org/<u></u>posting-guide.html</a><br>
and provide commented, minimal, self-contained, reproducible code.<br>
</blockquote></div><br></div></div>