Main

Toolchain Archives

August 20, 2007

The Linux Tools and Languages Team at Oracle: An Introduction

After a few months at Oracle, it's time to talk a bit about what our team has been working on.

Kris Van Hees has started an open source (licensed under the GPL) automated and loosely distributed build-and-test reporting tool, called Labrat. It collects and displays test results for various projects. Right now Labrat is used for daily testing of Systemtap and Frysk. Alongside with running the testsuite for the projects and collecting the results, the build logs and the test logs, it also collects coverage information from each of the test runs. The project will be hosted here: OSS.oracle.com. At the moment it is temporarily fully accessible here: Automated Build-and-Test Tool Page.


Another area we are working on is Scripting Languages, mostly with PHP and Ruby. Christopher Jones and Alison Holloway are in the team, and their work is highlighted in their blogs:
Chris's Blog
Alison's Blog
Chris has put together the PHP RPMs for OEL, they are downloadable from Oracle's PHP project site.

Another project we are contributing to is Systemtap. I used to manage the project from the Red Hat side, and it has been refreshing to get to work again with the old crew, made of folks from IBM, Hitachi, Red Hat, Intel, and now Oracle. Oracle is starting by contributing to various scripts/tapsets, and fixing a few bugs, Wenji is the engineer working on this. In addition, Kris has been working with IBM to integrate the IBM test results for Systemap in the Labrat framework. Various new features for Labrat will fallout from this work.

And last but not least is Frsyk.I used to also manage this project when I was at Red Hat. The developers group for Frysk is still formed mostly of Red Hat people. IBM is contributing the PPC porting work, and they have recently incorporated upstream the brand new PPC port of libunwind. I have two engineers working on the project, Kris and Pearly. Kris has been looking at the testing of Frysk, and while working on that task, Labrat (see above) was created. Labrat mails daily test reports to the frysk-testresults mailing list. Beyond that, Kris has so far been looking at Frysk testsuite failures and hangs, and low level implementation cleanups. Pearly has been looking at the Frysk GUI, while getting more familiar with the code base, and has been fixing the memory and the disassembly windows.

I'll post more details on each project later.

April 21, 2008

UTF-16 and UTF-32 support in GCC added

Our team has made the first contribution to GCC last week.  This is
quite exciting news for us, and hopefully it will be the first of many
contributions to come.  Kris Van Hees has implemented UTF-16 and
UTF-32 char data types support for the C and C++ languages in gcc.

His work is based on the ISO/IEC draft technical report for C (ISO/IEC
JTC1 SC22 WG14 N1040) and the proposal for C++ (ISO/IEC JTC1 SC22 WG21N2249)  here
Neither proposal defines a specific encoding for UTF-16. This
implementation uses the target endianness to determine whether
UTF-16BE or UTF-16LE will be used.

Support was added for the following wide character datatypes (internal
for C, Fundamental types for C++) with the given underlying data
types:

    * char16_t: short unsigned int
    * char32_t: unsigned int

Support was added to the tokenizer to accept the following new
character and string literal notations:

    * u'c-char-sequence' char16_t character literal (UTF-16)
    * U'c-char-sequence' char32_t character literal (UTF-32)
    * u"s-char-sequence" array of char16_t (UTF-16)
    * U"s-char-sequence" array of char32_t (UTF-32)

Support was also added to the C parser and the C++ parser to handle the
following concatenations of string literals:

    * "a" u"a" -> u"ab"
    * u"a" "b" -> u"ab"
    * u"a" u"b" -> u"ab"
    * "a" U"b" -> U"ab"
    * U"a" "b" -> U"ab"
    * U"a" U"b" -> U"ab"

This behaviour is only available in the gnu99, c++0x, and gnu++0x
compiler modes.

See the initial patch submitted upstream:
http://gcc.gnu.org/ml/gcc/2007-11/msg00021.html
And the revisions:
    * http://gcc.gnu.org/ml/gcc-patches/2008-03/msg00827.html
    * http://gcc.gnu.org/ml/gcc-patches/2008-03/msg01474.html
    * http://gcc.gnu.org/ml/gcc-patches/2008-03/msg02025.html
    * http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01235.html

The patch was commited to the GCC trunk on Apr 18th, 2008.
Thanks to Jason Merrill, Joseph Myers, Andrew Pinski and Tom Tromey for the reviews.

March 9, 2009

New Gcc-4.4.0 almost ready

The new gcc-4.4.0 is in the final stabilization phase and should be released shortly. I asked our team member Paolo Carlini what is new in this gcc release. Here is what he says:


If everything goes well a few week from now gcc4.4.0 will be released by the GNU Compiler Collection Project. The number of open high priority regressions is already well below the threshold of 100 set by the release managers, that is 81, thus a release branch will be created very soon and the actual release of the .0 version will shortly follow.

As usual, this new series offers a mix of new features and improvements, in the core compilers, in the libraries and improved conformance to the standards in force. The main entry point for the release notes is the following:

http://gcc.gnu.org/gcc-4.4/changes.html

but it's still being finalized, thus some additions are expected, and a few small tweaks too. In particular, many news in the C++ runtime, library area, contributed or closely followed by our in-house GCC hackers, and summarized here as follows:

- Many C++0x headers have been added, following as close as possible the most recent draft (N2800, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2800.pdf) of the forthcoming new ISO standard:
- <thread>, <condition_variable>, <mutex>, <cstdatomic>, supporting multithreaded programming.
- <chrono>, <ratio>, for general use and providing infrastructure to the above.
- <forward_list>, a new container, a single-linked list.
- <system_error>, providing components to report OS / low-level error conditions.

- Existing facilities have been extended to exploit in C++0x mode the new core language facilities implemented in the gcc4.4 C++ front-end for the first time, like initializer lists, defaulted / deleted functions and strongly typed enums. Headers <limits> and <string> have been extended to support the new char16_t and char32_t character types.

- Existing containers in C++0x mode are now more efficient together with stateful allocators (i.e., no allocators are created on the fly at element construction time).

- Many bugs have been fixed in existing TR1 facilities. Likewise for a series of subtle corner cases in the <locale> area.

- All the headers have been further cleaned-up wrt the 4.3.x release series (e.g., most of the times the relatively big <cstdio> is not included anymore as an implementation detail) for the benefit of building times, in particular at -O0, and also helping the maintainers when dealing with large user-provided testcases.

- Some long standing bugs have been fixed, for example FSF issue libstdc++/30928: the prototypes of some "C" string search facilities (like memchr, strchr, etc, and the wchar_t counterparts) have been fixed according to the ISO C++ Standard.

Nothing is set in stone yet, a few weeks of pure bug fixing activities are expected before the final release date, thus all the interested colleagues are encouraged to test the weekly snapshots or trees checked out via svn. The reference web page is the usual:

http://gcc.gnu.org/

and of course, in particular for issues having to do with the C++ library and front-end but really for any non-trivial doubt and curiosity, people are also encouraged to keep in touch with our in-house colleagues working on GCC, thus Kris Van Hees, Paolo Carlini, and Pearly Zhao.

June 19, 2009

New GCC and Libstdc++ blog

Paolo Carlini, in our team, has started a new blog on GCC, and libstdc++ in particular. Check it his postings:
http://blogs.oracle.com/pcarlini

About Toolchain

This page contains an archive of all entries posted to Elena's Blog in the Toolchain category. They are listed from oldest to newest.

PHP is the previous category.

Tracing is the next category.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle