Is pruning transaction history implemented in Satoshi's bitcoin client? The original bitcoin paper suggests a method to discard old transactions. One should compute the Merkle Tree of the entire transaction history, and store only part of the tree.

However, I didn't notice this method implemented. BuildMerkleTree stores it in memory only, and seems to assume you're holding all transaction history, and the serialization method stores the actual transactions and does not store the Merkle Tree.

Is that implemented? Can you give me a reference to where is it in the code?

If not, is it planned for a specific future release?
Since Bitcoin Core v0.8.0, the validation database ("chainstate" or "UTXO set", or "account balance sheet") is separated from the blockchain. When a new block comes in, its effects (removing spent inputs, and adding outputs) are applied to the database. This means blocks are still downloaded and verified like before, but they aren't used for validation anymore afterwards. Blocks are still stored on disk in order to send them to other nodes that are synchronizing, or to rescan for old transactions.

Since Bitcoin Core v0.11.0, it is also possible to run in a true pruned mode, where the blocks on disk are actually deleted after a while. Since v0.12 it is possible to use the wallet while running in pruning mode. Since v0.14 it is possible to manually prune (by issuing an RPC command rather than have the application decide).

Note that neither of these mechanisms rely on the mechanism described in the Bitcoin whitepaper.