Open Source Compiler for SAS language/ GNU -DAP

A Bold GNU Head
Image via Wikipedia

I am still testing this out.

But if you know bit more about make and .compile in Ubuntu check out

http://www.gnu.org/software/dap/

I loved the humorous introduction

Dap is a small statistics and graphics package based on C. Version 3.0 and later of Dap can read SBS programs (based on the utterly famous, industry standard statistics system with similar initials – you know the one I mean)! The user wishing to perform basic statistical analyses is now freed from learning and using C syntax for straightforward tasks, while retaining access to the C-style graphics and statistics features provided by the original implementation. Dap provides core methods of data management, analysis, and graphics that are commonly used in statistical consulting practice (univariate statistics, correlations and regression, ANOVA, categorical data analysis, logistic regression, and nonparametric analyses).

Anyone familiar with the basic syntax of C programs can learn to use the C-style features of Dap quickly and easily from the manual and the examples contained in it; advanced features of C are not necessary, although they are available. (The manual contains a brief introduction to the C syntax needed for Dap.) Because Dap processes files one line at a time, rather than reading entire files into memory, it can be, and has been, used on data sets that have very many lines and/or very many variables.

I wrote Dap to use in my statistical consulting practice because the aforementioned utterly famous, industry standard statistics system is (or at least was) not available on GNU/Linux and costs a bundle every year under a lease arrangement. And now you can run programs written for that system directly on Dap! I was generally happy with that system, except for the graphics, which are all but impossible to use,  but there were a number of clumsy constructs left over from its ancient origins.

http://www.gnu.org/software/dap/#Sample output

  • Unbalanced ANOVA
  • Crossed, nested ANOVA
  • Random model, unbalanced
  • Mixed model, balanced
  • Mixed model, unbalanced
  • Split plot
  • Latin square
  • Missing treatment combinations
  • Linear regression
  • Linear regression, model building
  • Ordinal cross-classification
  • Stratified 2×2 tables
  • Loglinear models
  • Logit  model for linear-by-linear association
  • Logistic regression
  • Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

    sounds too good to be true- GNU /DAP joins WPS workbench and Dulles Open’s Carolina as the third SAS language compiler (besides the now defunct BASS software) see http://en.wikipedia.org/wiki/SAS_language#Controversy

     

    Also see http://en.wikipedia.org/wiki/DAP_(software)

    Dap was written to be a free replacement for SAS, but users are assumed to have a basic familiarity with the C programming language in order to permit greater flexibility. Unlike R it has been designed to be used on large data sets.

    It has been designed so as to cope with very large data sets; even when the size of the data exceeds the size of the computer’s memory

    Viva Libre Office

    WordPerfect 5.1 for DOS.
    Image via Wikipedia

    The Document Foundation is happy to announce the release candidate of
    LibreOffice 3.3.1. This release candidate is the first in a series of
    frequent bugfix releases on top of our LibreOffice 3.3 product. Please
    be aware that LibreOffice 3.3.1 RC1 is not yet ready for production
    use, you should continue to use LibreOffice for that.

    http://listarchives.documentfoundation.org/www/announce/msg00028.html

    Following is the list of changes against LibreOffice 3.3:

    Key changes at a glance:

    * Numerous translation updates
    * new mimetype icons for LibreOffice – explained here:
    http://luxate.blogspot.com/2011/01/not-even-included-but-already-improved.html
    * quite a few crasher fixes

    Detailed change log:

    * translation updates
    * Removed old/unmaintained icon themes
    * Fix for https://bugzilla.novell.com/show_bug.cgi?id=664516: Don’t
    use a reference or the default formula string will be changed
    * Install bash completion for oo* wrappers when enabled
    (https://bugzilla.novell.com/show_bug.cgi?id=665402)
    * Build fix: get the stlport compat workaround working for gcc 4.6.0
    * Build fix: no ddraw.h or ddraw.lib in the June 2010 DirectX SDK,
    removed usage
    * Windows installer: padded nologobanner.bmp, new size is 102×58
    * removed gd – Gaelic, ky – Kirghiz, pap – Papiamento, ti – Tigrinya,
    ms – Malay, ps – Pashto, ur – Urdu. UI localization does not exist
    in these languages. So it makes no sense to ship packages.
    * Build fix: pass thru PYTHON, found by configure. Will be used by
    filter/source/config/fragments/makefile.mk.
    * Upgraded libwpd (WordPerfect filter) to 0.9.1
    * Fixed BrOffice Windows start menu branding
    * Removed language code ‘kid’. kid is not Koshin, but key id pseudo
    language which is good for debugging UI but should no be included
    in the product
    * Added ca_XV and ast language/local name and description
    * Fixed incorrect page number in page preview mode
    (https://bugs.freedesktop.org/show_bug.cgi?id=33155). When the
    window is large enough to show several ‘Page X’ strings,
    the page number was not properly incremented.
    * Fixed incorrect import of cell attributes from Excel
    documents. When a cell with non-default formatting attribute starts
    with non-first row in a column, the filter would incorrectly apply
    the same format to all the cells above it if they didn’t have any
    formats.
    * Ubuntu: fix for lp#696527 – enable human icon theme in LibreOffice
    * Fix for https://bugzilla.redhat.com/show_bug.cgi?id=673819 crash on
    changing position of drawing object in header.
    * Changed OpenOffice.org to LibreOffice in nsplugin
    * Added Occitan dictionary
    * Added Ukrainian dictionaries
    * Fix window focus for langpack installation on Mac –
    https://bugs.freedesktop.org/show_bug.cgi?id=33056
    * Added/modified NLPsolver translations from Pootle
    * Fix for https://bugzilla.novell.com/show_bug.cgi?id=655763
    * Fix for RTF export crasher
    (https://bugzilla.novell.com/show_bug.cgi?id=656503)
    * Use LibreOffice as product name for EPS Creator header
    * Parse svg ‘color’ property (fixes
    https://bugs.freedesktop.org/show_bug.cgi?id=33551)
    * Use double instead of float in writerfilter import
    * Build fix: use PYTHON as passed through by set_soenv.in.
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33237 remove
    debug line
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33237 – fixes
    ole object import for writer (docx)
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33249
    rename OOo -> LibO on Getting Support Page
    * Fix ooxml import: handle css::table::BorderLine in addition to
    css::table::BorderLine2 That means that table cell properties are
    correctly set on import again.
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33258
    wikihelp: Improve the check for existence of the localized help.
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33994 – fixes
    several crashes around config UNO API
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=30879
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=32872
    Implementation names weren’t matching with xcu.
    * Fix: don’t pushback and process a corrupt extension
    * Fix: wikihelp – do not check for existence of the localized
    help. In case we do not have the help installed, it is up to the
    online service to decide the fallback in case a language version is
    not available.
    * Fix README: change su urpmi to sudo urpmi for Mandriva section
    * Fix README formatting –
    https://bugs.freedesktop.org/show_bug.cgi?id=32741 – using CRLF
    instead of LF on WIN platform
    * Fix README: word wrap at column 75 for better readability
    * Build fix: KDE3 library search order
    (https://bugs.freedesktop.org/show_bug.cgi?id=32797). Use LINKFLAGS
    instead of STDLIBS.
    * Start using technical.dic instead of oracle.dic
    (https://bugs.freedesktop.org/show_bug.cgi?id=31798)
    * Build fix: add explicit QRegion* for clipRegion to fix compile of
    kde backend
    * Cleanup: removed obsolete m_bSingleAltPress
    * Remove the menu when Left Alt Key was pressed for GTK
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33459: use
    year of era in long format for zh_TW by default
    * Fix wrong collation for Catalan language
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=31271 wrong
    line break with “(”
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=32561 – crash
    when iterating over the database types.
    * Default currency for Estonia should be Euro – fixes
    https://bugs.freedesktop.org/show_bug.cgi?id=33160
    * Avoid a pointless GetHelpText() call in the toolbox. Fixes
    https://bugs.freedesktop.org/show_bug.cgi?id=33315. GetHelpText()
    can be quite heavy, see
    https://bugs.freedesktop.org/show_bug.cgi?id=33088.
    * Paint toolbar handle positioned properly
    (https://bugs.freedesktop.org/show_bug.cgi?id=32558)
    * Build fix: move cxxabi.h after stl headers to workaround gcc 4.6.0
    and stlport
    * Fix for https://bugs.freedesktop.org/show_bug.cgi?id=33355
    manipulate also the C runtime’s environment
    * Fix for CTL/Other Default Font #i25247#, #i25561#, #i48064#,
    #i92341#
    * RTF export crasher
    (https://bugzilla.novell.com/show_bug.cgi?id=656503)
    * Fixed an infinite loop in RTF exporter
    * UI: translations need more space on word count dialog, made space
    for it.
    * Fix for https://bugzilla.novell.com/show_bug.cgi?id=660816 improve
    formfield checkbox binary export (and import)

    Again a BIG Thank You!

    Again whats Libre Office

    What does LibreOffice give you?

    Writer is the word processor inside LibreOffice. Use it for everything, from dashing off a quick letter to producing an entire book with tables of contents, embedded illustrations, bibliographies and diagrams. The while-you-type auto-completion, auto-formatting and automatic spelling checking make difficult tasks easy (but are easy to disable if you prefer). Writer is powerful enough to tackle desktop publishing tasks such as creating multi-column newsletters and brochures. The only limit is your imagination.

    Calc tames your numbers and helps with difficult decisions when you’re weighing the alternatives. Analyze your data with Calc and then use it to present your final output. Charts and analysis tools help bring transparency to your conclusions. A fully-integrated help system makes easier work of entering complex formulas. Add data from external databases such as SQL or Oracle, then sort and filter them to produce statistical analyses. Use the graphing functions to display large number of 2D and 3D graphics from 13 categories, including line, area, bar, pie, X-Y, and net – with the dozens of variations available, you’re sure to find one that suits your project.

    Impress is the fastest and easiest way to create effective multimedia presentations. Stunning animation and sensational special effects help you convince your audience. Create presentations that look even more professional than the standard presentations you commonly see at work. Get your collegues’ and bosses’ attention by creating something a little bit different.

    Draw lets you build diagrams and sketches from scratch. A picture is worth a thousand words, so why not try something simple with box and line diagrams? Or else go further and easily build dynamic 3D illustrations and special effects. It’s as simple or as powerful as you want it to be.

    Base is the database front-end of the LibreOffice suite. With Base, you can seamlessly integrate your existing database structures into the other components of LibreOffice, or create an interface to use and administer your data as a stand-alone application. You can use imported and linked tables and queries from MySQL, PostgreSQL or Microsoft Access and many other data sources, or design your own with Base, to build powerful front-ends with sophisticated forms, reports and views. Support is built-in or easily addable for a very wide range of database products, notably the standardly-provided HSQL, MySQL, Adabas D, Microsoft Access and PostgreSQL.

    Math is a simple equation editor that lets you lay-out and display your mathematical, chemical, electrical or scientific equations quickly in standard written notation. Even the most-complex calculations can be understandable when displayed correctly. E=mc2.

    LibreOffice also comes configured with a PDF file creator, meaning you can distribute documents that you’re sure can be opened and read by users of almost any computing device or operating system.

    Download LibreOffice now and try it out today.

    http://www.libreoffice.org/features/

     

    Book Reviews- Hindu Myths- Mere Christianity

    A statue of Hindu deity Shiva in a temple in B...
    Image via Wikipedia

    Over the month long break I took, I was helping firm up my ideas for R for Analytics , I also took a break and read some books. Here are brief reviews of two, three of them-

    1) Hindu Myths

    This is a classical book translated from original Sanskrit written by Professor Wendy O Flaherty of University of Chicago. I found some of the older myths very interesting in terms of contradictions, retelling the same story in a modified way by another classic, the beautiful poetic and fantastic imagery evoked by Hindu myths. Some stories are as relevant in prayers, fasts and religious ceremonies as they were around 11000 years while most have morphed , edited or even distorted.

    It should help the non Indian reader understand why hundreds of millions of conservative Indians worship Shiv Ling ( or literally an idol of the Phallus of Shiva), the Hindu two cents of creation of the universe, and the somewhat fantastic stories on super heroes /gods/ in the ancient world.

    The book suffers from a few drawbacks in my opinion-

    1) Sanskrit is a bit like Latin- you can lose not just the flavor but original meaning of words and situational context. Some of the stories made better sense when i read a more recent Hindi translation.

    2) An excessive emphasis on sexual imagery rather than emotional imagery. The author seems wonder struck to read and translate ancient indians were so matter of fact about physical relationships. However the words were always written in discrete poetic than crass soft pornography.

    3) Almost no drawings or figures. This makes the book a bit dense to read at 300 pages.

    I liked another book on Hindu Myths (Myth= Mithya which I read in 2009) and you can see if you can read it if you find the topic interesting.

    A Handbook of Hindu Mythology

    Hindus have one God.
    They also have 330 million gods: male gods, female gods, personal gods, family gods, household gods, village gods, gods of space and time, gods for specific castes and particular professions, gods who reside in trees, in animals, in minerals, in geometrical patterns and in man-made objects.
    Then there are a whole host of demons.
    But no Devil.


    Mere Christianity by C S Lewis is a classic book on reinterpreting Christianity in modern times. However the author wrote this when World War 2 was on and it seems more like a British or Anglo Saxon interpretation of beliefs of Christ Jesus– who was actually a Jewish teacher born in Middle East Asia.

    While the language and reading makes it much easier to read- it is recommended more at Western audiences, than Eastern ones, as it seems some of the parables are a more palatable re interpretation of the New Testament. The Bible is a deceptively easy book to read, the language is short and beautiful-and the original parables in the Gospels remain powerful easy to understand.

    C S Lewis tends to emphasize morality than religiosity or faith, and there is not much comparison with any other faith or alternative morality. Dumbing down the Bible so as to market it better to reluctant consumers seems to be Mr Lewis intention and it is not as scholarly a work as an exercise in pure prose.

    However it is quite good as a self improvement book and is quite better than the “You Can Win” kind of books or even business concept books.

    Note- I find reading books on religion as good exercises in reading the fountain source of philosophies. As a polytheist- I tend to read more than one faith.

    SAS Lawsuit against WPS- Application Dismissed

    I saw Phil Rack http://twitter.com/#!/PhilRack (whom I have interviewed before at https://decisionstats.com/2009/02/03/interview-phil-rack/ ) and whom I dont talk to since Obama won the election-

     

     

     

     

     

     

     

    well Phil -creator of Bridge to R- first SAS language to R language interface- mentioned this judgment and link.

     

    Probably Phil should revise the documentation of Bridge to R- lest he is sued himself!!!

    Conclusion
    It was for these reasons that I decided to dismiss SAS’s application.

    From-

    http://www.bailii.org/cgi-bin/markup.cgi?doc=/ew/cases/EWHC/Ch/2010/3012.html

     

    Neutral Citation Number: [2010] EWHC 3012 (Ch)
    Case No: HC09C03293

    IN THE HIGH COURT OF JUSTICE
    CHANCERY DIVISION
    Royal Courts of Justice
    Strand, London, WC2A 2LL
    22 November 2010

    B e f o r e :

    THE HON MR JUSTICE ARNOLD
    ____________________
    Between:
    SAS INSTITUTE INC. Claimant
    – and –

    WORLD PROGRAMMING LIMITED Defendant

    ____________________

    Michael Hicks (instructed by Bristows) for the Claimant
    Martin Howe QC and Isabel Jamal (instructed by Speechly Bircham LLP) for the Defendant
    Hearing date: 18 November 2010
    ____________________

    HTML VERSION OF JUDGMENT
    ____________________

    Crown Copyright ©

    MR. JUSTICE ARNOLD :

    Introduction
    By order dated 28 July 2010 I referred certain questions concerning the interpretation of Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs, which was recently codified as European Parliament and Council Directive 2009/24/EC of 23 April 2009, and European Parliament and Council Directive 2001/29/EC of 22 May 2001 on the harmonisation of certain aspects of copyright and related rights in the information society to the Court of Justice of the European Union under Article 267 of the Treaty on the Functioning of the European Union. The background to the reference is set out in full in my judgment dated 23 July 2010 [2010] EWHC 1829 (Ch). The reference is presently pending before the Court of Justice as Case C-406/10. By an application notice issued on 11 October 2010 SAS applied for the wording of the questions to be amended in a number of respects. I heard that application on 18 November 2010 and refused it for reasons to be given later. This judgment contains those reasons.

    The questions and the proposed amendments
    I set out below the questions referred with the amendments proposed by SAS shown by strikethrough and underlining:

    “A. On the interpretation of Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs and of Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 (codified version):
    1. Where a computer program (‘the First Program’) is protected by copyright as a literary work, is Article 1(2) to be interpreted as meaning that it is not an infringement of the copyright in the First Program for a competitor of the rightholder without access to the source code of the First Program, either directly or via a process such as decompilation of the object code, to create another program (‘the Second Program’) which replicates by copying the functions of the First Program?
    2. Is the answer to question 1 affected by any of the following factors:
    (a) the nature and/or extent of the functionality of the First Program;
    (b) the nature and/or extent of the skill, judgment and labour which has been expended by the author of the First Program in devising and/or selecting the functionality of the First Program;
    (c) the level of detail to which the functionality of the First Program has been reproduced in the Second Program;
    (d) if, the Second Program includes the following matters as a result of copying directly or indirectly from the First Program:
    (i) the selection of statistical operations which have been implemented in the First Program;
    (ii) the selection of mathematical formulae defining the statistical operations which the First Program carries out;
    (iii) the particular commands or combinations of commands by which those statistical operations may be invoked;
    (iv) the options which the author of the First Program has provided in respect of various commands;
    (v) the keywords and syntax recognised by the First Program;
    (vi) the defaults which the author of the First Program has chosen to implement in the event that a particular command or option is not specified by the user;
    (vii) the number of iterations which the First Program will perform in certain circumstances;
    (e)(d) if the source code for the Second Program reproduces by copying aspects of the source code of the First Program to an extent which goes beyond that which was strictly necessary in order to produce the same functionality as the First Program?
    3. Where the First Program interprets and executes application programs written by users of the First Program in a programming language devised by the author of the First Program which comprises keywords devised or selected by the author of the First Program and a syntax devised by the author of the First Program, is Article 1(2) to be interpreted as meaning that it is not an infringement of the copyright in the First Program for the Second Program to be written so as to interpret and execute such application programs using the same keywords and the same syntax?
    4. Where the First Program reads from and writes to data files in a particular format devised by the author of the First Program, is Article 1(2) to be interpreted as meaning that it is not an infringement of the copyright in the First Program for the Second Program to be written so as to read from and write to data files in the same format?
    5. Does it make any difference to the answer to questions 1, 2, 3 and 4 if the author of the Second Program created the Second Program without access to the source code of the First Program, either directly or via decompilation of the object code by:
    (a) observing, studying and testing the functioning of the First Program; or
    (b) reading a manual created and published by the author of the First Program which describes the functions of the First Program (“the Manual”) and by implementing in the Second Program the functions described in the Manual; or
    (c) both (a) and (b)?
    6. Where a person has the right to use a copy of the First Program under a licence, is Article 5(3) to be interpreteding as meaning that the licensee is entitled, without the authorisation of the rightholder, to perform acts of loading, running and storing the program in order to observe, test or study the functioning of the First Program so as to determine the ideas and principles which underlie any element of the program, if the licence permits the licensee to perform acts of loading, running and storing the First Program when using it for the particular purpose permitted by the licence, but the acts done in order to observe, study or test the First Program extend outside the scope of the purpose permitted by the licence and are therefore acts for which the licensee has no right to use the copy of the First Program under the licence?
    7. Is Article 5(3) to be interpreted as meaning that acts of observing, testing or studying of the functioning of the First Program are to be regarded as being done in order to determine the ideas or principles which underlie any element of the First Program where they are done:
    (a) to ascertain the way in which the First Program functions, in particular details which are not described in the Manual, for the purpose of writing the Second Program in the manner referred to in question 1 above;
    (b) to ascertain how the First Program interprets and executes statements written in the programming language which it interprets and executes (see question 3 above);
    (c) to ascertain the formats of data files which are written to or read by the First Program (see question 4 above);
    (d) to compare the performance of the Second Program with the First Program for the purpose of investigating reasons why their performances differ and to improve the performance of the Second Program;
    (e) to conduct parallel tests of the First Program and the Second Program in order to compare their outputs in the course of developing the Second Program, in particular by running the same test scripts through both the First Program and the Second Program;
    (f) to ascertain the output of the log file generated by the First Program in order to produce a log file which is identical or similar in appearance;
    (g) to cause the First Program to output data (in fact, data correlating zip codes to States of the USA) for the purpose of ascertaining whether or not it corresponds with official databases of such data, and if it does not so correspond, to program the Second Program so that it will respond in the same way as the First Program to the same input data.
    B. On the interpretation of Directive 2001/29/EC of the European Parliament and of the Council of 22 May 2001 on the harmonisation of certain aspects of copyright and related rights in the information society:
    8. Where the Manual is protected by copyright as a literary work, is Article 2(a) to be interpreted as meaning that it is an infringement of the copyright in the Manual for the author of the Second Program to reproduce or substantially reproduce in the Second Program any or all of the following matters described in the Manual:
    (a) the selection of statistical operations which have been described in the Manual as being implemented in the First Program;
    (b) the mathematical formulae used in the Manual to describe those statistical operations;
    (c) the particular commands or combinations of commands by which those statistical operations may be invoked;
    (d) the options which the author of the First Program has provided in respect of various commands;
    (e) the keywords and syntax recognised by the First Program;
    (f) the defaults which the author of the First Program has chosen to implement in the event that a particular command or option is not specified by the user;
    (g) the number of iterations which the First Program will perform in certain circumstances?
    9. Is Article 2(a) to be interpreted as meaning that it is an infringement of the copyright in the Manual for the author of the Second Program to reproduce or substantially reproduce in a manual describing the Second Program the keywords and syntax recognised by the First Program?”

    Jurisdiction
    It was common ground between counsel that, although there is no direct authority on the point, it appears that the Court of Justice would accept an amendment to questions which had previously been referred by the referring court. The Court of Justice has stated that “national courts have the widest discretion in referring matters”: see Case 166/73 Rheinmühlen Düsseldorf v Einfuhr-und Vorratstelle für Getreide under Futtermittel [1974] ECR 33 at [4]. If an appeal court substitutes questions for those referred by a lower court, the substituted questions will be answered: Case 65/77 Razanatsimba [1977] ECR 2229. Sometimes the Court of Justice itself invites the referring court to clarify its questions, as occurred in Interflora Inc v Marks & Spencer plc (No 2) [2010] EWHC 925 (Ch). In these circumstances, there does not appear to be any reason to think that, if the referring court itself had good reason to amend its questions, the Court of Justice would disregard the amendment.

    Counsel for WPL submitted, however, that, as a matter of domestic procedural law, this Court had no jurisdiction to vary an order for reference once sealed unless either there had been a material change of circumstances since the order (as in Interflora) or it had subsequently emerged that the Court had made the order on a false basis. He submitted that neither of those conditions was satisfied here. In those circumstances, the only remedy of a litigant in the position of SAS was to seek to appeal to the Court of Appeal.

    As counsel for WPL pointed out, CPR rule 3.1(7) confers on courts what appears to be a general power to vary or revoke their own orders. The proper exercise of that power was considered by the Court of Appeal in Collier v Williams [2006] EWCA Civ 20, [2006] 1 WLR 1945 and Roult v North West Strategic Health Authority [2009] EWCA Civ 444, [2010] 1 WLR 487.

    In Collier Dyson LJ (as he then was) giving the judgment of the Court of Appeal said:

    “39. We now turn to the third argument. CPR 3.1(7) gives a very general power to vary or revoke an order. Consideration was given to the circumstances in which that power might be used by Patten J in Lloyds Investment (Scandinavia) Limited v Christen Ager-Hanssen [2003] EWHC 1740 (Ch). He said at paragraph 7:
    ‘The Deputy Judge exercised a discretion under CPR Part 13.3. It is not open to me as a judge exercising a parallel jurisdiction in the same division of the High Court to entertain what would in effect be an appeal from that order. If the Defendant wished to challenge whether the order made by Mr Berry was disproportionate and wrong in principle, then he should have applied for permission to appeal to the Court of Appeal. I have been given no real reasons why this was not done. That course remains open to him even today, although he will have to persuade the Court of Appeal of the reasons why he should have what, on any view, is a very considerable extension of time. It seems to me that the only power available to me on this application is that contained in CPR Part 3.1(7), which enables the Court to vary or revoke an order. This is not confined to purely procedural orders and there is no real guidance in the White Book as to the possible limits of the jurisdiction. Although this is not intended to be an exhaustive definition of the circumstances in which the power under CPR Part 3.1(7) is exercisable, it seems to me that, for the High Court to revisit one of its earlier orders, the Applicant must either show some material change of circumstances or that the judge who made the earlier order was misled in some way, whether innocently or otherwise, as to the correct factual position before him. The latter type of case would include, for example, a case of material non-disclosure on an application for an injunction. If all that is sought is a reconsideration of the order on the basis of the same material, then that can only be done, in my judgment, in the context of an appeal. Similarly it is not, I think, open to a party to the earlier application to seek in effect to re-argue that application by relying on submissions and evidence which were available to him at the time of the earlier hearing, but which, for whatever reason, he or his legal representatives chose not to employ. It is therefore clear that I am not entitled to entertain this application on the basis of the Defendant’s first main submission, that Mr Berry’s order was in any event disproportionate and wrong in principle, although I am bound to say that I have some reservations as to whether he was right to impose a condition of this kind without in terms enquiring whether the Defendant had any realistic prospects of being able to comply with the condition.’
    We endorse that approach. We agree that the power given by CPR 3.1(7) cannot be used simply as an equivalent to an appeal against an order with which the applicant is dissatisfied. The circumstances outlined by Patten J are the only ones in which the power to revoke or vary an order already made should be exercised under 3.1(7).”
    In Roult Hughes LJ, with whom Smith and Carnwath LJJ agreed, said at [15]:

    “There is scant authority upon Rule 3.1(7) but such as exists is unanimous in holding that it cannot constitute a power in a judge to hear an appeal from himself in respect of a final order. Neuberger J said as much in Customs & Excise v Anchor Foods (No 3) [1999] EWHC 834 (Ch). So did Patten J in Lloyds Investment (Scandinavia) Ltd v Ager-Hanssen [2003] EWHC 1740 (Ch). His general approach was approved by this court, in the context of case management decisions, in Collier v Williams [2006] EWCA Civ 20. I agree that in its terms the rule is not expressly confined to procedural orders. Like Patten J in Ager-Hanssen I would not attempt any exhaustive classification of the circumstances in which it may be proper to invoke it. I am however in no doubt that CPR 3.1(7) cannot bear the weight which Mr Grime’s argument seeks to place upon it. If it could, it would come close to permitting any party to ask any judge to review his own decision and, in effect, to hear an appeal from himself, on the basis of some subsequent event. It would certainly permit any party to ask the judge to review his own decision when it is not suggested that he made any error. It may well be that, in the context of essentially case management decisions, the grounds for invoking the rule will generally fall into one or other of the two categories of (i) erroneous information at the time of the original order or (ii) subsequent event destroying the basis on which it was made. The exigencies of case management may well call for a variation in planning from time to time in the light of developments. There may possibly be examples of non-procedural but continuing orders which may call for revocation or variation as they continue – an interlocutory injunction may be one. But it does not follow that wherever one or other of the two assertions mentioned (erroneous information and subsequent event) can be made, then any party can return to the trial judge and ask him to re-open any decision…..”
    In the present case there has been no material change of circumstances since I made the Order dated 28 July 2010. Nor did counsel for SAS suggest that I had made the Order upon a false basis. Counsel for SAS did submit, however, that the Court of Appeal had left open the possibility that it might be proper to exercise the power conferred by rule 3.1(7) even if there had no been material change of circumstances and it was not suggested that the order in question had been made on a false basis. Furthermore, he relied upon paragraph 1.1 of the Practice Direction to CPR Part 68, which provides that “responsibility for settling the terms of the reference lies with the English court and not with the parties”. He suggested that this meant that orders for references were not subject to the usual constraints on orders made purely inter partes.

    In my judgment PD68 paragraph 1.1 does not justify exercising the power conferred by rule 3.1(7) in circumstances falling outside those identified in Collier and Roult. I am therefore very doubtful that it would be a proper exercise of the power conferred on me by CPR r. 3.1(7) to vary the Order dated 28 July 2010 in the present circumstances. I prefer, however, not to rest my decision on that ground.

    Discretion
    Counsel for WPL also submitted that, even if this Court had jurisdiction to amend the questions, I should exercise my discretion by refusing to do so for two reasons. First, because the application was made too late. Secondly, because there was no sufficient justification for the amendments anyway. I shall consider these points separately.

    Delay
    The relevant dates are as follows. The judgment was handed down on 23 July 2010, a draft having been made available to the parties a few days before that. There was a hearing to consider the form of the order, and in particular the wording of the questions to be referred, on 28 July 2010. Prior to that hearing both parties submitted drafts of the questions, and the respective drafts were discussed at the hearing. Following the hearing I settled the Order, and in particular the questions. The Order was sealed on 2 August 2010. The sealed Order was received by the parties between 3 and 5 August 2010. At around the same time the Senior Master of the Queen’s Bench Division transmitted the Order to the Court of Justice. On 15 September 2010 the Registry of the Court of Justice notified the parties, Member States and EU institutions of the reference. On 1 October 2010 the United Kingdom Intellectual Property Office advertised the reference on its website and invited comments by interested parties by 7 October 2010. The latest date on which written observations on the questions referred may be filed at the Court of Justice is 8 December 2010 (two months from the date of the notification plus 10 days extension on account of distance where applicable). This period is not extendable in any circumstances.

    As noted above, the application was not issued until 11 October 2010. No justification has been provided by SAS for the delay in making the application. The only explanation offered by counsel for SAS was that the idea of proposing the amendments had only occurred to those representing SAS when starting work on SAS’s written observations.

    Furthermore, the application notice requested that the matter be dealt with without a hearing. In my view that was not appropriate: the application was plainly one which was likely to require at least a short hearing. Furthermore, the practical consequence of proceeding in that way was to delay the hearing of the application. The paper application was put before me on 22 October 2010. On the same day I directed that the matter be listed for hearing. In the result it was not listed for hearing until 18 November 2010. If SAS had applied for the matter to be heard urgently, I am sure that it could have been dealt with sooner.

    As counsel for WPL submitted, it is likely that the parties, Member States and institutions who intend to file written observations are now at an advanced stage of preparing those observations. Indeed, it is likely that preparations would have been well advanced even on 11 October 2010. To amend the questions at this stage in the manner proposed by SAS would effectively require the Court of Justice to re-start the written procedure all over again. The amended questions would have to be translated into all the EU official languages; the parties, Member States and EU institutions would have to be notified of the amended questions; and the time for submitting written observations would have to be re-set. This would have two consequences. First, a certain amount of time, effort and money on the part of those preparing written observations would be wasted. Secondly, the progress of the case would be delayed. Those are consequences that could have been avoided if SAS had moved promptly after receiving the sealed Order.

    In these circumstances, it would not in my judgment be proper to exercise any discretion I may have in favour of amending the questions.

    No sufficient justification
    Counsel for WPL submitted that in any event SAS’s proposed amendments were not necessary in order to enable the Court of Justice to provide guidance on the issues in this case, and therefore there was no sufficient justification for making the amendments.

    Before addressing that submission directly, I think it is worth commenting more generally on the formulation of questions. As is common ground, and reflected in paragraph 1.1 of PD68, it is well established that the questions posed on a reference under Article 267 are the referring court’s questions, not the parties’. The purpose of the procedure is for the Court of Justice to provide the referring court with the guidance it needs in order to deal with the issues before it. It follows that it is for the referring court to decide how to formulate the questions.

    In my view it is usually helpful for the court to have the benefit of the parties’ comments on the wording of the proposed questions, as envisaged in paragraph 1.1 of PD68. There are two main reasons for this. The first is to try to ensure that the questions are sufficiently comprehensive to enable all the issues arising to be addressed by the Court of Justice, and thus avoid the need for a further reference at a later stage of the proceedings, as occurred in the Boehringer Ingelheim v Swingward litigation. In that case Laddie J referred questions to the Court of Justice, which were answered in Case C-143/00 [2002] ECR I-3759. The Court of Appeal subsequently concluded, with regret, that the answers to those questions did not suffice to enable it to deal with the case, and referred further questions to the Court of Justice: [2004] EWCA Civ 575, [2004] ETMR 65. Those questions were answered in Case C-348/04 [2007] ECR I-3391. The second main reason is to try to ensure that the questions are clear and free from avoidable ambiguity or obscurity.

    In my experience it is not uncommon for parties addressing the court on the formulation of the questions to attempt to ensure that the questions are worded in a leading manner, that is to say, in a way which suggests the desired answer. In my view that is neither proper nor profitable. It is not proper because the questions should so far as possible be impartially worded. It is not profitable because experience shows that the Court of Justice is usually not concerned with the precise wording of the questions referred, but with their legal substance. Thus the Court of Justice frequently reformulates the question in giving its answer.

    As counsel for WPL pointed out, and as I have already mentioned, in the present case the parties provided me with draft questions which were discussed at a hearing. In settling the questions I took into account the parties’ drafts and their comments on each other’s drafts, but the final wording is, for better or worse, my own.

    As counsel for WPL submitted, at least to some extent SAS’s proposed amendments to the questions appear designed to bring the wording closer to that originally proposed by SAS. This is particularly true of the proposed amendment to question 1. In my judgment it would not be a proper exercise of any discretion that I may have to permit such an amendment, both because it appears to be an attempt by SAS to have the question worded in a manner which it believes favours its case and because its proper remedy if it objected to my not adopting the wording it proposed was to seek to appeal to the Court of Appeal. In saying this, I do not overlook the fact that SAS proposes to move some of the words excised from question 1 to question 5.

    In any event, I am not satisfied that any of the amendments are necessary either to enable the parties to present their respective arguments to the Court of Justice or to enable the Court to give guidance on any of the issues arising in this case. On the contrary, I consider that the existing questions are sufficient for these purposes. By way of illustration, I will take the biggest single amendment, which is the proposed insertion of new paragraph (d) in question 2. In my view, the matters referred to in paragraph (d) are matters that are encompassed within paragraphs (b) and/or (c); or at least can be addressed by the parties, and hence the Court of Justice, in the context provided by paragraphs (b) and/or (c). When I put this to counsel for SAS during the course of argument, he accepted it.

    Other amendments counsel for SAS himself presented as merely being minor matters of clarification. In my view none of them amount to the elimination of what would otherwise be ambiguities or obscurities in the questions.

    It is fair to say that SAS have identified a small typographical error in question 2 (“interpreting” should read “interpreted”), but in my view this is an obvious error which will not cause any difficulty in the proceedings before the Court of Justice.

    Conclusion
    It was for these reasons that I decided to dismiss SAS’s application

    R Apache – The next frontier of R Computing

    I am currently playing/ trying out RApache- one more excellent R product from Vanderbilt’s excellent Dept of Biostatistics and it’s prodigious coder Jeff Horner.

    The big ninja himself

    I really liked the virtual machine idea- you can download a virtual image of Rapache and play with it- .vmx is easy to create and great to share-

    http://rapache.net/vm.html

    Basically using R Apache (with an EC2 on backend) can help you create customized dashboards, BI apps, etc all using R’s graphical and statistical capabilities.

    What’s R Apache?

    As  per

    http://biostat.mc.vanderbilt.edu/wiki/Main/RapacheWebServicesReport

    Rapache embeds the R interpreter inside the Apache 2 web server. By doing this, Rapache realizes the full potential of R and its facilities over the web. R programmers configure appache by mapping Universal Resource Locaters (URL’s) to either R scripts or R functions. The R code relies on CGI variables to read a client request and R’s input/output facilities to write the response.

    One advantage to Rapache’s architecture is robust multi-process management by Apache. In contrast to Rserve and RSOAP, Rapache is a pre-fork server utilizing HTTP as the communications protocol. Another advantage is a clear separation, a loose coupling, of R code from client code. With Rserve and RSOAP, the client must send data and R commands to be executed on the server. With Rapache the only client requirements are the ability to communicate via HTTP. Additionally, Rapache gains significant authentication, authorization, and encryption mechanism by virtue of being embedded in Apache.

    Existing Demos of Architechture based on R Apache-

    1. http://rweb.stat.ucla.edu/ggplot2/ An interactive web dashboard for plotting graphics based on csv or Google Spreadsheet Data
    2. http://labs.dataspora.com/gameday/ A demo visualization of a web based dashboard system of baseball pitches by pitcher by player 

     

     

     

     

     

     

     

    3. http://data.vanderbilt.edu/rapache/bbplot For baseball results – a demo of a query based web dashboard system- very good BI feel.

    Whats coming next in R Apache?

    You can  download version 1.1.10 of rApache now. There
    are only two significant changes and you don’t have to edit your
    apache config or change any code (just recompile rApache and
    reinstall):

    1) Error reporting should be more informative. both when you
    accidentally introduce errors in the Apache config, and when your code
    introduces warnings and errors from web requests.

    I’ve struggled with this one for awhile, not really knowing what
    strategy would be best. Basically, rApache hooks into the R I/O layer
    at such a low level that it’s hard to capture all warnings and errors
    as they occur and introduce them to the user in a sane manner. In
    prior releases, when ROutputErrors was in effect (either the apache
    directive or the R function) one would typically see a bunch of grey
    boxes with a red outline with a title of RApache Warning/Error!!!.
    Unfortunately those grey boxes could contain empty lines, one line of
    error, or a few that relate to the lines in previously displayed
    boxes. Really a big uninformative mess.

    The new approach is to print just one warning box with the title
    “”Oops!!! <b>rApache</b> has something to tell you. View source and
    read the HTML comments at the end.” and then as the title implies you
    can read the HTML comment located at the end of the file… after the
    closing html. That way, you’re actually reading how R would present
    the warnings and errors to you as if you executed the code at the R
    command prompt. And if you don’t use ROutputErrors, the warning/error
    messages are printed in the Apache log file, just as they were before,
    but nicer 😉

    2) Code dispatching has changed so please let me know if I’ve
    introduced any strange behavior.

    This was necessary to enhance error reporting. Prior to this release,
    rApache would use R’s C API exclusively to build up the call to your
    code that is then passed to R’s evaluation engine. The advantage to
    this approach is that it’s much more efficient as there is no parsing
    involved, however all information about parse errors, files which
    produced errors, etc. were lost. The new approach uses R’s built-in
    parse function to build up the call and then passes it of to R. A
    slight overhead, but it should be negligible. So, if you feel that
    this approach is too slow OR I’ve introduced bugs or strange behavior,
    please let me know.

    FUTURE PLANS

    I’m gaining more experience building Debian/Ubuntu packages each day,
    so hopefully by some time in 2011 you can rely on binary releases for
    these distributions and not install rApache from source! Fingers
    crossed!

    Development on the rApache 1.1 branch will be winding down (save bug
    fix releases) as I transition to the 1.2 branch. This will involve
    taking out a small chunk of code that defines the rApache development
    environment (all the CGI variables and the functions such as
    setHeader, setCookie, etc) and placing it in its own R package…
    unnamed as of yet. This is to facilitate my development of the ralite
    R package, a small single user cross-platform web server.

    The goal for ralite is to speed up development of R web applications,
    take out a bit of friction in the development process by not having to
    run the full rApache server. Plus it would allow users to develop in
    the rApache enronment while on windows and later deploy on more
    capable server environments. The secondary goal for ralite is it’s use
    in other web server environments (nginx and IIS come to mind) as a
    persistent per-client process.

    And finally, wiki.rapache.net will be the new www.rapache.net once I
    translate the manual over… any day now.

    From –http://biostat.mc.vanderbilt.edu/wiki/Main/JeffreyHorner

     

     

    Not convinced ?- try the demos above.

    So what’s new in R 2.12.0

    PoissonCDF
    Image via Wikipedia

    and as per http://cran.r-project.org/src/base/NEWS

    the answer is plenty is new in the newR.

    While you and me, were busy writing and reading blogs, or generally writing code for earning more money, or our own research- Uncle Peter D and his band of merry men have been really busy in a much more upgraded R.

    ————————————–

    CHANGES————————-

    NEW FEATURES:
    
        • Reading a packages's CITATION file now defaults to ASCII rather
          than Latin-1: a package with a non-ASCII CITATION file should
          declare an encoding in its DESCRIPTION file and use that encoding
          for the CITATION file.
    
        • difftime() now defaults to the "tzone" attribute of "POSIXlt"
          objects rather than to the current timezone as set by the default
          for the tz argument.  (Wish of PR#14182.)
    
        • pretty() is now generic, with new methods for "Date" and "POSIXt"
          classes (based on code contributed by Felix Andrews).
    
        • unique() and match() are now faster on character vectors where
          all elements are in the global CHARSXP cache and have unmarked
          encoding (ASCII).  Thanks to Matthew Dowle for suggesting
          improvements to the way the hash code is generated in unique.c.
    
        • The enquote() utility, in use internally, is exported now.
    
        • .C() and .Fortran() now map non-zero return values (other than
          NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
          assumption that they are treated as true.
    
        • The print() methods for "glm" and "lm" objects now insert
          linebreaks in long calls in the same way that the print() methods
          for "summary.[g]lm" objects have long done.  This does change the
          layout of the examples for a number of packages, e.g. MASS.
          (PR#14250)
    
        • constrOptim() can now be used with method "SANN".  (PR#14245)
    
          It gains an argument hessian to be passed to optim(), which
          allows all the ... arguments to be intended for f() and grad().
          (PR#14071)
    
        • curve() now allows expr to be an object of mode "expression" as
          well as "call" and "function".
    
        • The "POSIX[cl]t" methods for Axis() have been replaced by a
          single method for "POSIXt".
    
          There are no longer separate plot() methods for "POSIX[cl]t" and
          "Date": the default method has been able to handle those classes
          for a long time.  This _inter alia_ allows a single date-time
          object to be supplied, the wish of PR#14016.
    
          The methods had a different default ("") for xlab.
    
        • Classes "POSIXct", "POSIXlt" and "difftime" have generators
          .POSIXct(), .POSIXlt() and .difftime().  Package authors are
          advised to make use of them (they are available from R 2.11.0) to
          proof against planned future changes to the classes.
    
          The ordering of the classes has been changed, so "POSIXt" is now
          the second class.  See the document ‘Updating packages for
          changes in R 2.12.x’ on  for
          the consequences for a handful of CRAN packages.
    
        • The "POSIXct" method of as.Date() allows a timezone to be
          specified (but still defaults to UTC).
    
        • New list2env() utility function as an inverse of
          as.list() and for fast multi-assign() to existing
          environment.  as.environment() is now generic and uses list2env()
          as list method.
    
        • There are several small changes to output which ‘zap’ small
          numbers, e.g. in printing quantiles of residuals in summaries
          from "lm" and "glm" fits, and in test statisics in print.anova().
    
        • Special names such as "dim", "names", etc, are now allowed as
          slot names of S4 classes, with "class" the only remaining
          exception.
    
        • File .Renviron can have architecture-specific versions such as
          .Renviron.i386 on systems with sub-architectures.
    
        • installed.packages() has a new argument subarch to filter on
          sub-architecture.
    
        • The summary() method for packageStatus() now has a separate
          print() method.
    
        • The default summary() method returns an object inheriting from
          class "summaryDefault" which has a separate print() method that
          calls zapsmall() for numeric/complex values.
    
        • The startup message now includes the platform and if used,
          sub-architecture: this is useful where different
          (sub-)architectures run on the same OS.
    
        • The getGraphicsEvent() mechanism now allows multiple windows to
          return graphics events, through the new functions
          setGraphicsEventHandlers(), setGraphicsEventEnv(), and
          getGraphicsEventEnv().  (Currently implemented in the windows()
          and X11() devices.)
    
        • tools::texi2dvi() gains an index argument, mainly for use by R
          CMD Rd2pdf.
    
          It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
          since that does not emulate 'makeindex' well enough to avoid
          problems with special characters (such as (, {, !) in indices.
    
        • The ability of readLines() and scan() to re-encode inputs to
          marked UTF-8 strings on Windows since R 2.7.0 is extended to
          non-UTF-8 locales on other OSes.
    
        • scan() gains a fileEncoding argument to match read.table().
    
        • points() and lines() gain "table" methods to match plot().  (Wish
          of PR#10472.)
    
        • Sys.chmod() allows argument mode to be a vector, recycled along
          paths.
    
        • There are |, & and xor() methods for classes "octmode" and
          "hexmode", which work bitwise.
    
        • Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,
          R_PDFLATEXCMD are no longer used nor set in an R session.  (With
          the move to tools::texi2dvi(), the conventional environment
          variables LATEX, MAKEINDEX and PDFLATEX will be used.
          options("dvipscmd") defaults to the value of DVIPS, then to
          "dvips".)
    
        • New function isatty() to see if terminal connections are
          redirected.
    
        • summaryRprof() returns the sampling interval in component
          sample.interval and only returns in by.self data for functions
          with non-zero self times.
    
        • print(x) and str(x) now indicate if an empty list x is named.
    
        • install.packages() and remove.packages() with lib unspecified and
          multiple libraries in .libPaths() inform the user of the library
          location used with a message rather than a warning.
    
        • There is limited support for multiple compressed streams on a
          file: all of [bgx]zfile() allow streams to be appended to an
          existing file, but bzfile() reads only the first stream.
    
        • Function person() in package utils now uses a given/family scheme
          in preference to first/middle/last, is vectorized to handle an
          arbitrary number of persons, and gains a role argument to specify
          person roles using a controlled vocabulary (the MARC relator
          terms).
    
        • Package utils adds a new "bibentry" class for representing and
          manipulating bibliographic information in enhanced BibTeX style,
          unifying and enhancing the previously existing mechanisms.
    
        • A bibstyle() function has been added to the tools package with
          default JSS style for rendering "bibentry" objects, and a
          mechanism for registering other rendering styles.
    
        • Several aspects of the display of text help are now customizable
          using the new Rd2txt_options() function.
          options("help_text_width") is no longer used.
    
        • Added \href tag to the Rd format, to allow hyperlinks to URLs
          without displaying the full URL.
    
        • Added \newcommand and \renewcommand tags to the Rd format, to
          allow user-defined macros.
    
        • New toRd() generic in the tools package to convert objects to
          fragments of Rd code, and added "fragment" argument to Rd2txt(),
          Rd2HTML(), and Rd2latex() to support it.
    
        • Directory R_HOME/share/texmf now follows the TDS conventions, so
          can be set as a texmf tree (‘root directory’ in MiKTeX parlance).
    
        • S3 generic functions now use correct S4 inheritance when
          dispatching on an S4 object.  See ?Methods, section on “Methods
          for S3 Generic Functions” for recommendations and details.
    
        • format.pval() gains a ... argument to pass arguments such as
          nsmall to format().  (Wish of PR#9574)
    
        • legend() supports title.adj.  (Wish of PR#13415)
    
        • Added support for subsetting "raster" objects, plus assigning to
          a subset, conversion to a matrix (of colour strings), and
          comparisons (== and !=).
    
        • Added a new parseLatex() function (and related functions
          deparseLatex() and latexToUtf8()) to support conversion of
          bibliographic entries for display in R.
    
        • Text rendering of \itemize in help uses a Unicode bullet in UTF-8
          and most single-byte Windows locales.
    
        • Added support for polygons with holes to the graphics engine.
          This is implemented for the pdf(), postscript(),
          x11(type="cairo"), windows(), and quartz() devices (and
          associated raster formats), but not for x11(type="Xlib") or
          xfig() or pictex().  The user-level interface is the polypath()
          function in graphics and grid.path() in grid.
    
        • File NEWS is now generated at installation with a slightly
          different format: it will be in UTF-8 on platforms using UTF-8,
          and otherwise in ASCII.  There is also a PDF version, NEWS.pdf,
          installed at the top-level of the R distribution.
    
        • kmeans(x, 1) now works.  Further, kmeans now returns between and
          total sum of squares.
    
        • arrayInd() and which() gain an argument useNames.  For arrayInd,
          the default is now false, for speed reasons.
    
        • As is done for closures, the default print method for the formula
          class now displays the associated environment if it is not the
          global environment.
    
        • A new facility has been added for inserting code into a package
          without re-installing it, to facilitate testing changes which can
          be selectively added and backed out.  See ?insertSource.
    
        • New function readRenviron to (re-)read files in the format of
          ~/.Renviron and Renviron.site.
    
        • require() will now return FALSE (and not fail) if loading the
          package or one of its dependencies fails.
    
        • aperm() now allows argument perm to be a character vector when
          the array has named dimnames (as the results of table() calls
          do).  Similarly, array() allows MARGIN to be a character vector.
          (Based on suggestions of Michael Lachmann.)
    
        • Package utils now exports and documents functions
          aspell_package_Rd_files() and aspell_package_vignettes() for
          spell checking package Rd files and vignettes using Aspell,
          Ispell or Hunspell.
    
        • Package news can now be given in Rd format, and news() prefers
          these inst/NEWS.Rd files to old-style plain text NEWS or
          inst/NEWS files.
    
        • New simple function packageVersion().
    
        • The PCRE library has been updated to version 8.10.
    
        • The standard Unix-alike terminal interface declares its name to
          readline as 'R', so that can be used for conditional sections in
          ~/.inputrc files.
    
        • ‘Writing R Extensions’ now stresses that the standard sections in
          .Rd files (other than \alias, \keyword and \note) are intended to
          be unique, and the conversion tools now drop duplicates with a
          warning.
    
          The .Rd conversion tools also warn about an unrecognized type in
          a \docType section.
    
        • ecdf() objects now have a quantile() method.
    
        • format() methods for date-time objects now attempt to make use of
          a "tzone" attribute with "%Z" and "%z" formats, but it is not
          always possible.  (Wish of PR#14358.)
    
        • tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
          where emulation is used and when file is not in the current
          directory).
    
        • New function droplevels() to remove unused factor levels.
    
        • system(command, intern = TRUE) now gives an error on a Unix-alike
          (as well as on Windows) if command cannot be run.  It reports a
          non-success exit status from running command as a warning.
    
          On a Unix-alike an attempt is made to return the actual exit
          status of the command in system(intern = FALSE): previously this
          had been system-dependent but on POSIX-compliant systems the
          value return was 256 times the status.
    
        • system() has a new argument ignore.stdout which can be used to
          (portably) ignore standard output.
    
        • system(intern = TRUE) and pipe() connections are guaranteed to be
          avaliable on all builds of R.
    
        • Sys.which() has been altered to return "" if the command is not
          found (even on Solaris).
    
        • A facility for defining reference-based S4 classes (in the OOP
          style of Java, C++, etc.) has been added experimentally to
          package methods; see ?ReferenceClasses.
    
        • The predict method for "loess" fits gains an na.action argument
          which defaults to na.pass rather than the previous default of
          na.omit.
    
          Predictions from "loess" fits are now named from the row names of
          newdata.
    
        • Parsing errors detected during Sweave() processing will now be
          reported referencing their original location in the source file.
    
        • New adjustcolor() utility, e.g., for simple translucent color
          schemes.
    
        • qr() now has a trivial lm method with a simple (fast) validity
          check.
    
        • An experimental new programming model has been added to package
          methods for reference (OOP-style) classes and methods.  See
          ?ReferenceClasses.
    
        • bzip2 has been updated to version 1.0.6 (bug-fix release).
          --with-system-bzlib now requires at least version 1.0.6.
    
        • R now provides jss.cls and jss.bst (the class and bib style file
          for the Journal of Statistical Software) as well as RJournal.bib
          and Rnews.bib, and R CMD ensures that the .bst and .bib files are
          found by BibTeX.
    
        • Functions using the TAR environment variable no longer quote the
          value when making system calls.  This allows values such as tar
          --force-local, but does require additional quotes in, e.g., TAR =
          "'/path with spaces/mytar'".
    
      DEPRECATED & DEFUNCT:
    
        • Supplying the parser with a character string containing both
          octal/hex and Unicode escapes is now an error.
    
        • File extension .C for C++ code files in packages is now defunct.
    
        • R CMD check no longer supports configuration files containing
          Perl configuration variables: use the environment variables
          documented in ‘R Internals’ instead.
    
        • The save argument of require() now defaults to FALSE and save =
          TRUE is now deprecated.  (This facility is very rarely actually
          used, and was superseded by the Depends field of the DESCRIPTION
          file long ago.)
    
        • R CMD check --no-latex is deprecated in favour of --no-manual.
    
        • R CMD Sd2Rd is formally deprecated and will be removed in R
          2.13.0.
    
      PACKAGE INSTALLATION:
    
        • install.packages() has a new argument libs_only to optionally
          pass --libs-only to R CMD INSTALL and works analogously for
          Windows binary installs (to add support for 64- or 32-bit
          Windows).
    
        • When sub-architectures are in use, the installed architectures
          are recorded in the Archs field of the DESCRIPTION file.  There
          is a new default filter, "subarch", in available.packages() to
          make use of this.
    
          Code is compiled in a copy of the src directory when a package is
          installed for more than one sub-architecture: this avoid problems
          with cleaning the sources between building sub-architectures.
    
        • R CMD INSTALL --libs-only no longer overrides the setting of
          locking, so a previous version of the package will be restored
          unless --no-lock is specified.
    
      UTILITIES:
    
        • R CMD Rprof|build|check are now based on R rather than Perl
          scripts.  The only remaining Perl scripts are the deprecated R
          CMD Sd2Rd and install-info.pl (used only if install-info is not
          found) as well as some maintainer-mode-only scripts.
    
          *NB:* because these have been completely rewritten, users should
          not expect undocumented details of previous implementations to
          have been duplicated.
    
          R CMD no longer manipulates the environment variables PERL5LIB
          and PERLLIB.
    
        • R CMD check has a new argument --extra-arch to confine tests to
          those needed to check an additional sub-architecture.
    
          Its check for “Subdirectory 'inst' contains no files” is more
          thorough: it looks for files, and warns if there are only empty
          directories.
    
          Environment variables such as R_LIBS and those used for
          customization can be set for the duration of checking _via_ a
          file ~/.R/check.Renviron (in the format used by .Renviron, and
          with sub-architecture specific versions such as
          ~/.R/check.Renviron.i386 taking precedence).
    
          There are new options --multiarch to check the package under all
          of the installed sub-architectures and --no-multiarch to confine
          checking to the sub-architecture under which check is invoked.
          If neither option is supplied, a test is done of installed
          sub-architectures and all those which can be run on the current
          OS are used.
    
          Unless multiple sub-architectures are selected, the install done
          by check for testing purposes is only of the current
          sub-architecture (_via_ R CMD INSTALL --no-multiarch).
    
          It will skip the check for non-ascii characters in code or data
          if the environment variables _R_CHECK_ASCII_CODE_ or
          _R_CHECK_ASCII_DATA_ are respectively set to FALSE.  (Suggestion
          of Vince Carey.)
    
        • R CMD build no longer creates an INDEX file (R CMD INSTALL does
          so), and --force removes (rather than overwrites) an existing
          INDEX file.
    
          It supports a file ~/.R/build.Renviron analogously to check.
    
          It now runs build-time \Sexpr expressions in help files.
    
        • R CMD Rd2dvi makes use of tools::texi2dvi() to process the
          package manual.  It is now implemented entirely in R (rather than
          partially as a shell script).
    
        • R CMD Rprof now uses utils::summaryRprof() rather than Perl.  It
          has new arguments to select one of the tables and to limit the
          number of entries printed.
    
        • R CMD Sweave now runs R with --vanilla so the environment setting
          of R_LIBS will always be used.
    
      C-LEVEL FACILITIES:
    
        • lang5() and lang6() (in addition to pre-existing lang[1-4]())
          convenience functions for easier construction of eval() calls.
          If you have your own definition, do wrap it inside #ifndef lang5
          .... #endif to keep it working with old and new R.
    
        • Header R.h now includes only the C headers it itself needs, hence
          no longer includes errno.h.  (This helps avoid problems when it
          is included from C++ source files.)
    
        • Headers Rinternals.h and R_ext/Print.h include the C++ versions
          of stdio.h and stdarg.h respectively if included from a C++
          source file.
    
      INSTALLATION:
    
        • A C99 compiler is now required, and more C99 language features
          will be used in the R sources.
    
        • Tcl/Tk >= 8.4 is now required (increased from 8.3).
    
        • System functions access, chdir and getcwd are now essential to
          configure R.  (In practice they have been required for some
          time.)
    
        • make check compares the output of the examples from several of
          the base packages to reference output rather than the previous
          output (if any).  Expect some differences due to differences in
          floating-point computations between platforms.
    
        • File NEWS is no longer in the sources, but generated as part of
          the installation.  The primary source for changes is now
          doc/NEWS.Rd.
    
        • The popen system call is now required to build R.  This ensures
          the availability of system(intern = TRUE), pipe() connections and
          printing from postscript().
    
        • The pkg-config file libR.pc now also works when R is installed
          using a sub-architecture.
    
        • R has always required a BLAS that conforms to IE60559 arithmetic,
          but after discovery of more real-world problems caused by a BLAS
          that did not, this is tested more thoroughly in this version.
    
      BUG FIXES:
    
        • Calls to selectMethod() by default no longer cache inherited
          methods.  This could previously corrupt methods used by as().
    
        • The densities of non-central chi-squared are now more accurate in
          some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
          series expansion was truncated too early.  (PR#14105)
    
        • pt() is more accurate in the left tail for ncp large, e.g.
          pt(-1000, 3, 200).  (PR#14069)
    
        • The default C function (R_binary) for binary ops now sets the S4
          bit in the result if either argument is an S4 object.  (PR#13209)
    
        • source(echo=TRUE) failed to echo comments that followed the last
          statement in a file.
    
        • S4 classes that contained one of "matrix", "array" or "ts" and
          also another class now accept superclass objects in new().  Also
          fixes failure to call validObject() for these classes.
    
        • Conditional inheritance defined by argument test in
          methods::setIs() will no longer be used in S4 method selection
          (caching these methods could give incorrect results).  See
          ?setIs.
    
        • The signature of an implicit generic is now used by setGeneric()
          when that does not use a definition nor explicitly set a
          signature.
    
        • A bug in callNextMethod() for some examples with "..." in the
          arguments has been fixed.  See file
          src/library/methods/tests/nextWithDots.R in the sources.
    
        • match(x, table) (and hence %in%) now treat "POSIXlt" consistently
          with, e.g., "POSIXct".
    
        • Built-in code dealing with environments (get(), assign(),
          parent.env(), is.environment() and others) now behave
          consistently to recognize S4 subclasses; is.name() also
          recognizes subclasses.
    
        • The abs.tol control parameter to nlminb() now defaults to 0.0 to
          avoid false declarations of convergence in objective functions
          that may go negative.
    
        • The standard Unix-alike termination dialog to ask whether to save
          the workspace takes a EOF response as n to avoid problems with a
          damaged terminal connection.  (PR#14332)
    
        • Added warn.unused argument to hist.default() to allow suppression
          of spurious warnings about graphical parameters used with
          plot=FALSE.  (PR#14341)
    
        • predict.lm(), summary.lm(), and indeed lm() itself had issues
          with residual DF in zero-weighted cases (the latter two only in
          connection with empty models). (Thanks to Bill Dunlap for
          spotting the predict() case.)
    
        • aperm() treated resize = NA as resize = TRUE.
    
        • constrOptim() now has an improved convergence criterion, notably
          for cases where the minimum was (very close to) zero; further,
          other tweaks inspired from code proposals by Ravi Varadhan.
    
        • Rendering of S3 and S4 methods in man pages has been corrected
          and made consistent across output formats.
    
        • Simple markup is now allowed in \title sections in .Rd files.
    
        • The behaviour of as.logical() on factors (to use the levels) was
          lost in R 2.6.0 and has been restored.
    
        • prompt() did not backquote some default arguments in the \usage
          section.  (Reported by Claudia Beleites.)
    
        • writeBin() disallows attempts to write 2GB or more in a single
          call. (PR#14362)
    
        • new() and getClass() will now work if Class is a subclass of
          "classRepresentation" and should also be faster in typical calls.
    
        • The summary() method for data frames makes a better job of names
          containing characters invalid in the current locale.
    
        • [[ sub-assignment for factors could create an invalid factor
          (reported by Bill Dunlap).
    
        • Negate(f) would not evaluate argument f until first use of
          returned function (reported by Olaf Mersmann).
    
        • quietly=FALSE is now also an optional argument of library(), and
          consequently, quietly is now propagated also for loading
          dependent packages, e.g., in require(*, quietly=TRUE).
    
        • If the loop variable in a for loop was deleted, it would be
          recreated as a global variable.  (Reported by Radford Neal; the
          fix includes his optimizations as well.)
    
        • Task callbacks could report the wrong expression when the task
          involved parsing new code. (PR#14368)
    
        • getNamespaceVersion() failed; this was an accidental change in
          2.11.0. (PR#14374)
    
        • identical() returned FALSE for external pointer objects even when
          the pointer addresses were the same.
    
        • L$a@x[] <- val did not duplicate in a case it should have.
    
        • tempfile() now always gives a random file name (even if the
          directory is specified) when called directly after startup and
          before the R RNG had been used.  (PR#14381)
    
        • quantile(type=6) behaved inconsistently.  (PR#14383)
    
        • backSpline(.) behaved incorrectly when the knot sequence was
          decreasing.  (PR#14386)
    
        • The reference BLAS included in R was assuming that 0*x and x*0
          were always zero (whereas they could be NA or NaN in IEC 60559
          arithmetic).  This was seen in results from tcrossprod, and for
          example that log(0) %*% 0 gave 0.
    
        • The calculation of whether text was completely outside the device
          region (in which case, you draw nothing) was wrong for screen
          devices (which have [0, 0] at top-left).  The symptom was (long)
          text disappearing when resizing a screen window (to make it
          smaller).  (PR#14391)
    
        • model.frame(drop.unused.levels = TRUE) did not take into account
          NA values of factors when deciding to drop levels. (PR#14393)
    
        • library.dynam.unload required an absolute path for libpath.
          (PR#14385)
    
          Both library() and loadNamespace() now record absolute paths for
          use by searchpaths() and getNamespaceInfo(ns, "path").
    
        • The self-starting model NLSstClosestX failed if some deviation
          was exactly zero.  (PR#14384)
    
        • X11(type = "cairo") (and other devices such as png using
          cairographics) and which use Pango font selection now work around
          a bug in Pango when very small fonts (those with sizes between 0
          and 1 in Pango's internal units) are requested.  (PR#14369)
    
        • Added workaround for the font problem with X11(type = "cairo")
          and similar on Mac OS X whereby italic and bold styles were
          interchanged.  (PR#13463 amongst many other reports.)
    
        • source(chdir = TRUE) failed to reset the working directory if it
          could not be determined - that is now an error.
    
        • Fix for crash of example(rasterImage) on x11(type="Xlib").
    
        • Force Quartz to bring the on-screen display up-to-date
          immediately before the snapshot is taken by grid.cap() in the
          Cocoa implementation. (PR#14260)
    
        • model.frame had an unstated 500 byte limit on variable names.
          (Example reported by Terry Therneau.)
    
        • The 256-byte limit on names is now documented.    • Subassignment by [, [[ or $ on an expression object with value
          NULL coerced the object to a list.

     

     

    So what's new in R 2.12.0

    PoissonCDF
    Image via Wikipedia

    and as per http://cran.r-project.org/src/base/NEWS

    the answer is plenty is new in the newR.

    While you and me, were busy writing and reading blogs, or generally writing code for earning more money, or our own research- Uncle Peter D and his band of merry men have been really busy in a much more upgraded R.

    ————————————–

    CHANGES————————-

    NEW FEATURES:
    
        • Reading a packages's CITATION file now defaults to ASCII rather
          than Latin-1: a package with a non-ASCII CITATION file should
          declare an encoding in its DESCRIPTION file and use that encoding
          for the CITATION file.
    
        • difftime() now defaults to the "tzone" attribute of "POSIXlt"
          objects rather than to the current timezone as set by the default
          for the tz argument.  (Wish of PR#14182.)
    
        • pretty() is now generic, with new methods for "Date" and "POSIXt"
          classes (based on code contributed by Felix Andrews).
    
        • unique() and match() are now faster on character vectors where
          all elements are in the global CHARSXP cache and have unmarked
          encoding (ASCII).  Thanks to Matthew Dowle for suggesting
          improvements to the way the hash code is generated in unique.c.
    
        • The enquote() utility, in use internally, is exported now.
    
        • .C() and .Fortran() now map non-zero return values (other than
          NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
          assumption that they are treated as true.
    
        • The print() methods for "glm" and "lm" objects now insert
          linebreaks in long calls in the same way that the print() methods
          for "summary.[g]lm" objects have long done.  This does change the
          layout of the examples for a number of packages, e.g. MASS.
          (PR#14250)
    
        • constrOptim() can now be used with method "SANN".  (PR#14245)
    
          It gains an argument hessian to be passed to optim(), which
          allows all the ... arguments to be intended for f() and grad().
          (PR#14071)
    
        • curve() now allows expr to be an object of mode "expression" as
          well as "call" and "function".
    
        • The "POSIX[cl]t" methods for Axis() have been replaced by a
          single method for "POSIXt".
    
          There are no longer separate plot() methods for "POSIX[cl]t" and
          "Date": the default method has been able to handle those classes
          for a long time.  This _inter alia_ allows a single date-time
          object to be supplied, the wish of PR#14016.
    
          The methods had a different default ("") for xlab.
    
        • Classes "POSIXct", "POSIXlt" and "difftime" have generators
          .POSIXct(), .POSIXlt() and .difftime().  Package authors are
          advised to make use of them (they are available from R 2.11.0) to
          proof against planned future changes to the classes.
    
          The ordering of the classes has been changed, so "POSIXt" is now
          the second class.  See the document ‘Updating packages for
          changes in R 2.12.x’ on  for
          the consequences for a handful of CRAN packages.
    
        • The "POSIXct" method of as.Date() allows a timezone to be
          specified (but still defaults to UTC).
    
        • New list2env() utility function as an inverse of
          as.list() and for fast multi-assign() to existing
          environment.  as.environment() is now generic and uses list2env()
          as list method.
    
        • There are several small changes to output which ‘zap’ small
          numbers, e.g. in printing quantiles of residuals in summaries
          from "lm" and "glm" fits, and in test statisics in print.anova().
    
        • Special names such as "dim", "names", etc, are now allowed as
          slot names of S4 classes, with "class" the only remaining
          exception.
    
        • File .Renviron can have architecture-specific versions such as
          .Renviron.i386 on systems with sub-architectures.
    
        • installed.packages() has a new argument subarch to filter on
          sub-architecture.
    
        • The summary() method for packageStatus() now has a separate
          print() method.
    
        • The default summary() method returns an object inheriting from
          class "summaryDefault" which has a separate print() method that
          calls zapsmall() for numeric/complex values.
    
        • The startup message now includes the platform and if used,
          sub-architecture: this is useful where different
          (sub-)architectures run on the same OS.
    
        • The getGraphicsEvent() mechanism now allows multiple windows to
          return graphics events, through the new functions
          setGraphicsEventHandlers(), setGraphicsEventEnv(), and
          getGraphicsEventEnv().  (Currently implemented in the windows()
          and X11() devices.)
    
        • tools::texi2dvi() gains an index argument, mainly for use by R
          CMD Rd2pdf.
    
          It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
          since that does not emulate 'makeindex' well enough to avoid
          problems with special characters (such as (, {, !) in indices.
    
        • The ability of readLines() and scan() to re-encode inputs to
          marked UTF-8 strings on Windows since R 2.7.0 is extended to
          non-UTF-8 locales on other OSes.
    
        • scan() gains a fileEncoding argument to match read.table().
    
        • points() and lines() gain "table" methods to match plot().  (Wish
          of PR#10472.)
    
        • Sys.chmod() allows argument mode to be a vector, recycled along
          paths.
    
        • There are |, & and xor() methods for classes "octmode" and
          "hexmode", which work bitwise.
    
        • Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,
          R_PDFLATEXCMD are no longer used nor set in an R session.  (With
          the move to tools::texi2dvi(), the conventional environment
          variables LATEX, MAKEINDEX and PDFLATEX will be used.
          options("dvipscmd") defaults to the value of DVIPS, then to
          "dvips".)
    
        • New function isatty() to see if terminal connections are
          redirected.
    
        • summaryRprof() returns the sampling interval in component
          sample.interval and only returns in by.self data for functions
          with non-zero self times.
    
        • print(x) and str(x) now indicate if an empty list x is named.
    
        • install.packages() and remove.packages() with lib unspecified and
          multiple libraries in .libPaths() inform the user of the library
          location used with a message rather than a warning.
    
        • There is limited support for multiple compressed streams on a
          file: all of [bgx]zfile() allow streams to be appended to an
          existing file, but bzfile() reads only the first stream.
    
        • Function person() in package utils now uses a given/family scheme
          in preference to first/middle/last, is vectorized to handle an
          arbitrary number of persons, and gains a role argument to specify
          person roles using a controlled vocabulary (the MARC relator
          terms).
    
        • Package utils adds a new "bibentry" class for representing and
          manipulating bibliographic information in enhanced BibTeX style,
          unifying and enhancing the previously existing mechanisms.
    
        • A bibstyle() function has been added to the tools package with
          default JSS style for rendering "bibentry" objects, and a
          mechanism for registering other rendering styles.
    
        • Several aspects of the display of text help are now customizable
          using the new Rd2txt_options() function.
          options("help_text_width") is no longer used.
    
        • Added \href tag to the Rd format, to allow hyperlinks to URLs
          without displaying the full URL.
    
        • Added \newcommand and \renewcommand tags to the Rd format, to
          allow user-defined macros.
    
        • New toRd() generic in the tools package to convert objects to
          fragments of Rd code, and added "fragment" argument to Rd2txt(),
          Rd2HTML(), and Rd2latex() to support it.
    
        • Directory R_HOME/share/texmf now follows the TDS conventions, so
          can be set as a texmf tree (‘root directory’ in MiKTeX parlance).
    
        • S3 generic functions now use correct S4 inheritance when
          dispatching on an S4 object.  See ?Methods, section on “Methods
          for S3 Generic Functions” for recommendations and details.
    
        • format.pval() gains a ... argument to pass arguments such as
          nsmall to format().  (Wish of PR#9574)
    
        • legend() supports title.adj.  (Wish of PR#13415)
    
        • Added support for subsetting "raster" objects, plus assigning to
          a subset, conversion to a matrix (of colour strings), and
          comparisons (== and !=).
    
        • Added a new parseLatex() function (and related functions
          deparseLatex() and latexToUtf8()) to support conversion of
          bibliographic entries for display in R.
    
        • Text rendering of \itemize in help uses a Unicode bullet in UTF-8
          and most single-byte Windows locales.
    
        • Added support for polygons with holes to the graphics engine.
          This is implemented for the pdf(), postscript(),
          x11(type="cairo"), windows(), and quartz() devices (and
          associated raster formats), but not for x11(type="Xlib") or
          xfig() or pictex().  The user-level interface is the polypath()
          function in graphics and grid.path() in grid.
    
        • File NEWS is now generated at installation with a slightly
          different format: it will be in UTF-8 on platforms using UTF-8,
          and otherwise in ASCII.  There is also a PDF version, NEWS.pdf,
          installed at the top-level of the R distribution.
    
        • kmeans(x, 1) now works.  Further, kmeans now returns between and
          total sum of squares.
    
        • arrayInd() and which() gain an argument useNames.  For arrayInd,
          the default is now false, for speed reasons.
    
        • As is done for closures, the default print method for the formula
          class now displays the associated environment if it is not the
          global environment.
    
        • A new facility has been added for inserting code into a package
          without re-installing it, to facilitate testing changes which can
          be selectively added and backed out.  See ?insertSource.
    
        • New function readRenviron to (re-)read files in the format of
          ~/.Renviron and Renviron.site.
    
        • require() will now return FALSE (and not fail) if loading the
          package or one of its dependencies fails.
    
        • aperm() now allows argument perm to be a character vector when
          the array has named dimnames (as the results of table() calls
          do).  Similarly, array() allows MARGIN to be a character vector.
          (Based on suggestions of Michael Lachmann.)
    
        • Package utils now exports and documents functions
          aspell_package_Rd_files() and aspell_package_vignettes() for
          spell checking package Rd files and vignettes using Aspell,
          Ispell or Hunspell.
    
        • Package news can now be given in Rd format, and news() prefers
          these inst/NEWS.Rd files to old-style plain text NEWS or
          inst/NEWS files.
    
        • New simple function packageVersion().
    
        • The PCRE library has been updated to version 8.10.
    
        • The standard Unix-alike terminal interface declares its name to
          readline as 'R', so that can be used for conditional sections in
          ~/.inputrc files.
    
        • ‘Writing R Extensions’ now stresses that the standard sections in
          .Rd files (other than \alias, \keyword and \note) are intended to
          be unique, and the conversion tools now drop duplicates with a
          warning.
    
          The .Rd conversion tools also warn about an unrecognized type in
          a \docType section.
    
        • ecdf() objects now have a quantile() method.
    
        • format() methods for date-time objects now attempt to make use of
          a "tzone" attribute with "%Z" and "%z" formats, but it is not
          always possible.  (Wish of PR#14358.)
    
        • tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
          where emulation is used and when file is not in the current
          directory).
    
        • New function droplevels() to remove unused factor levels.
    
        • system(command, intern = TRUE) now gives an error on a Unix-alike
          (as well as on Windows) if command cannot be run.  It reports a
          non-success exit status from running command as a warning.
    
          On a Unix-alike an attempt is made to return the actual exit
          status of the command in system(intern = FALSE): previously this
          had been system-dependent but on POSIX-compliant systems the
          value return was 256 times the status.
    
        • system() has a new argument ignore.stdout which can be used to
          (portably) ignore standard output.
    
        • system(intern = TRUE) and pipe() connections are guaranteed to be
          avaliable on all builds of R.
    
        • Sys.which() has been altered to return "" if the command is not
          found (even on Solaris).
    
        • A facility for defining reference-based S4 classes (in the OOP
          style of Java, C++, etc.) has been added experimentally to
          package methods; see ?ReferenceClasses.
    
        • The predict method for "loess" fits gains an na.action argument
          which defaults to na.pass rather than the previous default of
          na.omit.
    
          Predictions from "loess" fits are now named from the row names of
          newdata.
    
        • Parsing errors detected during Sweave() processing will now be
          reported referencing their original location in the source file.
    
        • New adjustcolor() utility, e.g., for simple translucent color
          schemes.
    
        • qr() now has a trivial lm method with a simple (fast) validity
          check.
    
        • An experimental new programming model has been added to package
          methods for reference (OOP-style) classes and methods.  See
          ?ReferenceClasses.
    
        • bzip2 has been updated to version 1.0.6 (bug-fix release).
          --with-system-bzlib now requires at least version 1.0.6.
    
        • R now provides jss.cls and jss.bst (the class and bib style file
          for the Journal of Statistical Software) as well as RJournal.bib
          and Rnews.bib, and R CMD ensures that the .bst and .bib files are
          found by BibTeX.
    
        • Functions using the TAR environment variable no longer quote the
          value when making system calls.  This allows values such as tar
          --force-local, but does require additional quotes in, e.g., TAR =
          "'/path with spaces/mytar'".
    
      DEPRECATED & DEFUNCT:
    
        • Supplying the parser with a character string containing both
          octal/hex and Unicode escapes is now an error.
    
        • File extension .C for C++ code files in packages is now defunct.
    
        • R CMD check no longer supports configuration files containing
          Perl configuration variables: use the environment variables
          documented in ‘R Internals’ instead.
    
        • The save argument of require() now defaults to FALSE and save =
          TRUE is now deprecated.  (This facility is very rarely actually
          used, and was superseded by the Depends field of the DESCRIPTION
          file long ago.)
    
        • R CMD check --no-latex is deprecated in favour of --no-manual.
    
        • R CMD Sd2Rd is formally deprecated and will be removed in R
          2.13.0.
    
      PACKAGE INSTALLATION:
    
        • install.packages() has a new argument libs_only to optionally
          pass --libs-only to R CMD INSTALL and works analogously for
          Windows binary installs (to add support for 64- or 32-bit
          Windows).
    
        • When sub-architectures are in use, the installed architectures
          are recorded in the Archs field of the DESCRIPTION file.  There
          is a new default filter, "subarch", in available.packages() to
          make use of this.
    
          Code is compiled in a copy of the src directory when a package is
          installed for more than one sub-architecture: this avoid problems
          with cleaning the sources between building sub-architectures.
    
        • R CMD INSTALL --libs-only no longer overrides the setting of
          locking, so a previous version of the package will be restored
          unless --no-lock is specified.
    
      UTILITIES:
    
        • R CMD Rprof|build|check are now based on R rather than Perl
          scripts.  The only remaining Perl scripts are the deprecated R
          CMD Sd2Rd and install-info.pl (used only if install-info is not
          found) as well as some maintainer-mode-only scripts.
    
          *NB:* because these have been completely rewritten, users should
          not expect undocumented details of previous implementations to
          have been duplicated.
    
          R CMD no longer manipulates the environment variables PERL5LIB
          and PERLLIB.
    
        • R CMD check has a new argument --extra-arch to confine tests to
          those needed to check an additional sub-architecture.
    
          Its check for “Subdirectory 'inst' contains no files” is more
          thorough: it looks for files, and warns if there are only empty
          directories.
    
          Environment variables such as R_LIBS and those used for
          customization can be set for the duration of checking _via_ a
          file ~/.R/check.Renviron (in the format used by .Renviron, and
          with sub-architecture specific versions such as
          ~/.R/check.Renviron.i386 taking precedence).
    
          There are new options --multiarch to check the package under all
          of the installed sub-architectures and --no-multiarch to confine
          checking to the sub-architecture under which check is invoked.
          If neither option is supplied, a test is done of installed
          sub-architectures and all those which can be run on the current
          OS are used.
    
          Unless multiple sub-architectures are selected, the install done
          by check for testing purposes is only of the current
          sub-architecture (_via_ R CMD INSTALL --no-multiarch).
    
          It will skip the check for non-ascii characters in code or data
          if the environment variables _R_CHECK_ASCII_CODE_ or
          _R_CHECK_ASCII_DATA_ are respectively set to FALSE.  (Suggestion
          of Vince Carey.)
    
        • R CMD build no longer creates an INDEX file (R CMD INSTALL does
          so), and --force removes (rather than overwrites) an existing
          INDEX file.
    
          It supports a file ~/.R/build.Renviron analogously to check.
    
          It now runs build-time \Sexpr expressions in help files.
    
        • R CMD Rd2dvi makes use of tools::texi2dvi() to process the
          package manual.  It is now implemented entirely in R (rather than
          partially as a shell script).
    
        • R CMD Rprof now uses utils::summaryRprof() rather than Perl.  It
          has new arguments to select one of the tables and to limit the
          number of entries printed.
    
        • R CMD Sweave now runs R with --vanilla so the environment setting
          of R_LIBS will always be used.
    
      C-LEVEL FACILITIES:
    
        • lang5() and lang6() (in addition to pre-existing lang[1-4]())
          convenience functions for easier construction of eval() calls.
          If you have your own definition, do wrap it inside #ifndef lang5
          .... #endif to keep it working with old and new R.
    
        • Header R.h now includes only the C headers it itself needs, hence
          no longer includes errno.h.  (This helps avoid problems when it
          is included from C++ source files.)
    
        • Headers Rinternals.h and R_ext/Print.h include the C++ versions
          of stdio.h and stdarg.h respectively if included from a C++
          source file.
    
      INSTALLATION:
    
        • A C99 compiler is now required, and more C99 language features
          will be used in the R sources.
    
        • Tcl/Tk >= 8.4 is now required (increased from 8.3).
    
        • System functions access, chdir and getcwd are now essential to
          configure R.  (In practice they have been required for some
          time.)
    
        • make check compares the output of the examples from several of
          the base packages to reference output rather than the previous
          output (if any).  Expect some differences due to differences in
          floating-point computations between platforms.
    
        • File NEWS is no longer in the sources, but generated as part of
          the installation.  The primary source for changes is now
          doc/NEWS.Rd.
    
        • The popen system call is now required to build R.  This ensures
          the availability of system(intern = TRUE), pipe() connections and
          printing from postscript().
    
        • The pkg-config file libR.pc now also works when R is installed
          using a sub-architecture.
    
        • R has always required a BLAS that conforms to IE60559 arithmetic,
          but after discovery of more real-world problems caused by a BLAS
          that did not, this is tested more thoroughly in this version.
    
      BUG FIXES:
    
        • Calls to selectMethod() by default no longer cache inherited
          methods.  This could previously corrupt methods used by as().
    
        • The densities of non-central chi-squared are now more accurate in
          some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
          series expansion was truncated too early.  (PR#14105)
    
        • pt() is more accurate in the left tail for ncp large, e.g.
          pt(-1000, 3, 200).  (PR#14069)
    
        • The default C function (R_binary) for binary ops now sets the S4
          bit in the result if either argument is an S4 object.  (PR#13209)
    
        • source(echo=TRUE) failed to echo comments that followed the last
          statement in a file.
    
        • S4 classes that contained one of "matrix", "array" or "ts" and
          also another class now accept superclass objects in new().  Also
          fixes failure to call validObject() for these classes.
    
        • Conditional inheritance defined by argument test in
          methods::setIs() will no longer be used in S4 method selection
          (caching these methods could give incorrect results).  See
          ?setIs.
    
        • The signature of an implicit generic is now used by setGeneric()
          when that does not use a definition nor explicitly set a
          signature.
    
        • A bug in callNextMethod() for some examples with "..." in the
          arguments has been fixed.  See file
          src/library/methods/tests/nextWithDots.R in the sources.
    
        • match(x, table) (and hence %in%) now treat "POSIXlt" consistently
          with, e.g., "POSIXct".
    
        • Built-in code dealing with environments (get(), assign(),
          parent.env(), is.environment() and others) now behave
          consistently to recognize S4 subclasses; is.name() also
          recognizes subclasses.
    
        • The abs.tol control parameter to nlminb() now defaults to 0.0 to
          avoid false declarations of convergence in objective functions
          that may go negative.
    
        • The standard Unix-alike termination dialog to ask whether to save
          the workspace takes a EOF response as n to avoid problems with a
          damaged terminal connection.  (PR#14332)
    
        • Added warn.unused argument to hist.default() to allow suppression
          of spurious warnings about graphical parameters used with
          plot=FALSE.  (PR#14341)
    
        • predict.lm(), summary.lm(), and indeed lm() itself had issues
          with residual DF in zero-weighted cases (the latter two only in
          connection with empty models). (Thanks to Bill Dunlap for
          spotting the predict() case.)
    
        • aperm() treated resize = NA as resize = TRUE.
    
        • constrOptim() now has an improved convergence criterion, notably
          for cases where the minimum was (very close to) zero; further,
          other tweaks inspired from code proposals by Ravi Varadhan.
    
        • Rendering of S3 and S4 methods in man pages has been corrected
          and made consistent across output formats.
    
        • Simple markup is now allowed in \title sections in .Rd files.
    
        • The behaviour of as.logical() on factors (to use the levels) was
          lost in R 2.6.0 and has been restored.
    
        • prompt() did not backquote some default arguments in the \usage
          section.  (Reported by Claudia Beleites.)
    
        • writeBin() disallows attempts to write 2GB or more in a single
          call. (PR#14362)
    
        • new() and getClass() will now work if Class is a subclass of
          "classRepresentation" and should also be faster in typical calls.
    
        • The summary() method for data frames makes a better job of names
          containing characters invalid in the current locale.
    
        • [[ sub-assignment for factors could create an invalid factor
          (reported by Bill Dunlap).
    
        • Negate(f) would not evaluate argument f until first use of
          returned function (reported by Olaf Mersmann).
    
        • quietly=FALSE is now also an optional argument of library(), and
          consequently, quietly is now propagated also for loading
          dependent packages, e.g., in require(*, quietly=TRUE).
    
        • If the loop variable in a for loop was deleted, it would be
          recreated as a global variable.  (Reported by Radford Neal; the
          fix includes his optimizations as well.)
    
        • Task callbacks could report the wrong expression when the task
          involved parsing new code. (PR#14368)
    
        • getNamespaceVersion() failed; this was an accidental change in
          2.11.0. (PR#14374)
    
        • identical() returned FALSE for external pointer objects even when
          the pointer addresses were the same.
    
        • L$a@x[] <- val did not duplicate in a case it should have.
    
        • tempfile() now always gives a random file name (even if the
          directory is specified) when called directly after startup and
          before the R RNG had been used.  (PR#14381)
    
        • quantile(type=6) behaved inconsistently.  (PR#14383)
    
        • backSpline(.) behaved incorrectly when the knot sequence was
          decreasing.  (PR#14386)
    
        • The reference BLAS included in R was assuming that 0*x and x*0
          were always zero (whereas they could be NA or NaN in IEC 60559
          arithmetic).  This was seen in results from tcrossprod, and for
          example that log(0) %*% 0 gave 0.
    
        • The calculation of whether text was completely outside the device
          region (in which case, you draw nothing) was wrong for screen
          devices (which have [0, 0] at top-left).  The symptom was (long)
          text disappearing when resizing a screen window (to make it
          smaller).  (PR#14391)
    
        • model.frame(drop.unused.levels = TRUE) did not take into account
          NA values of factors when deciding to drop levels. (PR#14393)
    
        • library.dynam.unload required an absolute path for libpath.
          (PR#14385)
    
          Both library() and loadNamespace() now record absolute paths for
          use by searchpaths() and getNamespaceInfo(ns, "path").
    
        • The self-starting model NLSstClosestX failed if some deviation
          was exactly zero.  (PR#14384)
    
        • X11(type = "cairo") (and other devices such as png using
          cairographics) and which use Pango font selection now work around
          a bug in Pango when very small fonts (those with sizes between 0
          and 1 in Pango's internal units) are requested.  (PR#14369)
    
        • Added workaround for the font problem with X11(type = "cairo")
          and similar on Mac OS X whereby italic and bold styles were
          interchanged.  (PR#13463 amongst many other reports.)
    
        • source(chdir = TRUE) failed to reset the working directory if it
          could not be determined - that is now an error.
    
        • Fix for crash of example(rasterImage) on x11(type="Xlib").
    
        • Force Quartz to bring the on-screen display up-to-date
          immediately before the snapshot is taken by grid.cap() in the
          Cocoa implementation. (PR#14260)
    
        • model.frame had an unstated 500 byte limit on variable names.
          (Example reported by Terry Therneau.)
    
        • The 256-byte limit on names is now documented.    • Subassignment by [, [[ or $ on an expression object with value
          NULL coerced the object to a list.