Keep OSNews alive by becoming a Patreon, by donating through Ko-Fi, or by buying merch!

General Development Archive

Gcc 3.1.1 Released

GCC 3.1.1 has just been released. This release is a bug fix release relative to GCC 3.1. The next release of GCC will be GCC 3.2. This release will be available very soon (within days or a week). The only changes in GCC 3.2 relative to GCC 3.1.1 will be changes to the C++ ABI.

Borland Speeds Kylix C++ for Linux Development

Borland Software Corp is set to build on an early lead among Linux developers, with today's expected launch of a C++ rapid application development (RAD) environment. Scotts Valley, California-based Borland will announce version 3.0 of its Kylix RAD environment for C++. Previous versions of Kylix targeted Delphi programmers on Windows and Linux. Read the rest of the report at TheRegister.

Building GUI Applications with Python

"Developing the Graphical User Interface (GUI) for a Python application is often a tedious, time-consuming, and opaque process. This is the exact opposite of how Python programmers would describe most other aspects of software development using Python. So what is it about GUI applications that causes them to be so hard?" Read the technical article at OnLamp. Two more Python articles can be found at developerWorks at IBM, here and here.

Advanced Filesystem Implementor’s Guide, Part 11

In this article, Daniel Robbins (President/CEO, Gentoo Technologies, Inc.) shows you how to use the latest filesystem technologies in Linux 2.4 and gives an update on the status of the XFS, ReiserFS, and ext3 filesystems. He shares implementation advice, performance information, important technical notes, as well as an outline of how these various filesystems will continue to improve over the next year. You can also view his previous article in this series, which shows you how to get XFS up and running.

libferris Winds its Way Towards 1.0.0

libferris is a virtual filesystem (VFS) that runs in the user address space. This means that applications using libferris will use the shared libraries API to access the filesystem which may then delegate to the kernel using libc to perform the desired actions. Operating in the user address space allows libferris to mount things that one would generally not want the kernel to mount. For example libferris mount Berkeley database files, ftp sites, XML files, rpm files, sockets, sysv IPC, mysql databases and remote computers using ssh as a filesystem.

Proposal for the Development of a Web Services Application

If there was a single application making someone use MacOSX full time, that application would be Watson. This application is possibly the most awarded in the MacOSX world, and it is the best idea for an application that I saw the last few years. Despite the idea being dead simple, and even seem redundant at first, Watson is an excellent, original and handy tool. I would like to initiate an open source project for a multi-platform clone of Watson (Karelia say that they have no plans for any ports - with only a remote possibility for a Windows port). I will start by putting $100 USD on the table while readers are most welcome to co-sponsor the project as well. What we really need though, is willing and capable C++ developers.

Overriding the GNU C Library

What do you do if you don't have the source for your application and it's failing because a GNU Library for C (glibc) function is returning something bad to the application? Override the function of interest with your own version. This can be done without having root permissions and without recompiling the libc source. Imagine the thrill of writing your own version of open()! The article contains sample code.

Writing Your Own Toy OS, PART II

"The next thing that any one should know after learning to make a boot sector and before switching to protected mode is, how to use the BIOS interrupts. BIOS interrupts are the low level routines provided by the BIOS to make the work of the Operating System creator easy. This part of the article would deal with BIOS interrupts." This is the second part of the series of articles on how to write your own toy OS.

The Technology Behind LynxOS v4.0’s Linux ABI Compatibility

"LynxOS v4.0, the newest release of the POSIX-conformant hard real-time operating system (RTOS), has support for Linux ABI compatibility -- where Linux application binaries can run unchanged in the LynxOS environment without necessitating source code recompilation. This white paper examines the issues surrounding ABI compatibility in general and describes the architecture of the Linux ABI compatibility layer on LynxOS v4.0." Read the article at LinuxDevices.

Rediscovering Object Orientation

"Does anyone really know what "object oriented" means? Does the phrase signify anything, or are the words just strung together because of an historical misnomer? One thing is clear. No one understands what the phrase "object oriented" means when they first hear it. While it does appear to be a juxtaposition of two ordinary words, its meaning does not jump out at you." Read it at CobolReport.

Journaling Filesystems for Linux

"This sample chapter from 'Linux Filesystems' begins by providing a detailed overview of how Linux identifies filesystems, verifies that they are usable, and makes them available to users. The remainder of the chapter explains the differences between journaling and non-journaling local filesystems, shows how journaling filesystems track filesystem changes, and highlights the major reasons why these types of filesystems are becoming more common on today's computer systems." The Part I, available at InformIT (free reg. req'd). "How is data storage organized and allocated on Linux and Unix systems? This article discusses the basics of Linux and Unix filesystem organization, highlighting some of the more modern approaches used to improve performance, deal with larger files, and solve other problems." Part II. "Minimizing system restart time is the primary advantage of using a journaling filesystem, but there are many others. As "newer" filesystems, journaling filesystems can take advantage of newer techniques for enhancing filesystem performance." PartIII.

Benchmarking Intel C++ 6.0 to GNU g++ 3.0.4

CoyoteGulch.com has published an interesting article, benchmarking GCC 3.04 and ICC 6 (the article will be updated again after GCC 3.1's release). In the tests, ICC seems to pull ahead in most tests. When it's behind, it's never very far behind. The opposite is not true, and there are benchmarks where ICC is very far ahead, generating code that can be up to 5 times better than gcc's. Especially interesting, the "Stepanov" benchmark, which shows that ICC is capable of understanding the most complex c++ constructs, whereas GCC gets confused by them and ends up generating much slower code. This is bothersome, because it means that developers who want to get the most speed out of their gcc-compiled system need to write their code pretty much in C, whereas those using ICC can use all the productivity-enhancing features of C++ without speed penalty. As for the "WhetStone" benchmark, shows that gcc still has serious issues dealing with x87 floating-point code. It would also be very interesting to run the very same benchmark on a Pentium4, varying the compiler options, in order to see how both compilers can take advantage of the Pentium4's extra features, and especially SSE-2. Update: Another benchmark can be found here.

Alternatives to the Registry

Microsoft stores system configuration information in binary format in its Windows Registry, but other vendors take different approaches to achieve the same goal. MacOSX uses text files in XML format, while Solaris features a more complex system instead. Linux still uses flat text files for configuration, however Red Hat encourages the development of GConf, a registry-like system and library, that programs can use to store key-value pairs persistently. Read the interesting article at ComputerWorld.