General Development Archive

First look at Transactional NTFS

Transactional NTFS, coming in Longhorn, allows developers to group filesystem operations into transactions, and make those changes atomically. Changes made by transactions are isolated from each other, so that one transaction can 'see' a different set of files compared to another transaction. Transactions can also be used to view a frozen version of a file, fixed at a point in time, while another task updates the same file.

HOWTO: Apt For RPM

Here is a tutorial about apt on rpm-based distributions. This tutorial is split into two parts: in the first it demonstrates how to install and use apt based on an example (apt on SUSE 9.2), and in the second part it will give you an overview of the packages to install and the package repositories for each distribution mentioned above.

Higher Order Functions

Functions are the wonderful and powerful building blocks of computer programs. Functions allow you to break code down into simpler, more manageable steps. They also allow you to break programs into reusable parts -- parts that are both reusable within the program and in other programs as well. In this article, learn how to create new functions at runtime based on templates, how to create functions that are configurable at runtime using function parameters, and how the Scheme language can be a valuable tool with functions.

Metafunctions in C++; Assignment and Initialization

This chapter looks at a practical example from science and engineering that can find applications in almost any numerical code. Along the way, you'll learn some important new concepts and get a taste of metaprogramming at a high level using the MPL. Also, this chapter explains the difference between assignment and initialization in C++ in simple terms, with examples to illustrate each.

The Protothreads Library Version 1.1

Protothreads are an extremely lightweight, stackless type of threads written in portable C code. Protothreads provide blocked waiting and sequential code execution on top of event-driven systems, without the overhead of full multithreading or per-thread stacks. They are designed for severely memory constrained systems, has a very low RAM overhead, and can be used with or without an underlying OS. New in version 1.1 is the PT_YIELD() operation that allows a protothread to yield the CPU.