Overview for 'nikic'
Written by Nikita Popov
/ Original link
on May. 10, 2020
The front page of the LLVM website proudly claims that: Clang is an “LLVM native” C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles […] I’m not sure whether this has been true in the past, but it certainly isn’t true now. Each LLVM release is a few percent slower than the la…
Written by Nikita Popov
/ Original link
on Apr. 14, 2017
This article aims to provide an overview of the Zend Virtual Machine, as it is found in PHP 7. This is not a comprehensive description, but I try to cover most of the important parts, as well as some of the finer details. This description targets PHP version 7.2 (currently in development), but near…
Written by Nikita Popov
/ Original link
on Jun. 18, 2015
In the first part of this article, high level changes in the internal value representation between PHP 5 and PHP 7 were discussed. As a reminder, the main difference was that zvals are no longer individually allocated and don’t store a reference count themselves. Simple values like integers or floa…
Written by Nikita Popov
/ Original link
on May. 4, 2015
My last article described the improvements to the hashtable implementation that were introduced in PHP 7. This followup will take a look at the new representation of PHP values in general. Due to the amount of material to cover, the article is split in two parts: This part will describe how the zva…
Written by Nikita Popov
/ Original link
on Dec. 21, 2014
About three years ago I wrote an article analyzing the memory usage of arrays in PHP 5. As part of the work on the upcoming PHP 7, large parts of the Zend Engine have been rewritten with a focus on smaller data structures requiring fewer allocations. In this article I will provide an overview of th…
Written by Nikita Popov
/ Original link
on Mar. 13, 2014
A few days ago Anthony Ferrara wrote down some thoughts on the future of PHP. I concur with most of his opinions, but not all of them. In this post I’ll focus on one particular aspect: Turning primitive types like strings or arrays into “pseudo-objects” by allowing to perform method calls on them.…