Over the years, the software development kit used for creating UEFI BIOS images has undergone many changes.  This article explores how we got to where we are today; specifically, what we now call EDK II Stable Tags.

The history of the EDK can be broken down into three stages:
  1. EFI Application Toolkit
  2. EDK
  3. EDK II
The EDK II can then be broken down further into UDK releases and now EDK II Stable Tags.  Let's get started!

EFI Application Toolkit

Prior to the EDK, Intel released the EFI Application Toolkit, the direct predecessor to the EDK.

On March 17, 2000, version 0.72 of the EFI Application Toolkit was released with support for Itanium-based machines (IA64).  This version of the EFI Application Toolkit corresponded with v0.92.10.8 of the "sample implementation" source code, later called "Intel Platform Innovation Framework for EFI", and then finally "Tianocore".  This version of the sample implementation corresponded to 0.99 of the EFI specification.

On June 1, 2000, version 0.80 of the EFI Application Toolkit was released to support both IA-32 (a.k.a. x86) and IA-64 machines.  v0.80 corresponded to 0.99.12.24 of the sample implementation.  From Intel's developer site:


Later, newer versions of the EFI Application Toolkit were released, the last one being 1.10.14.62.  The EFI Application Toolkit was retired on July 1, 2007.

EDK

The original EDK was hosted on Sourceforge.net, and, as of this writing, can still be found here:  https://sourceforge.net/projects/efidevkit/.  The EDK had seven official releases, 1.00, 1.01, 1.02, 1.03, 1.04., 1.05, and 1.06.  In between the official releases, there were many development snapshots, accessible here, if for some strange reason you want to access them.


In 2008, the community then began transitioning to EDK II.  The differences between EDK I and EDK II are beyond the scope of this article, but to make a brief listing, some key differences were:
  • compiler-agnostic and OS-agnostic
    • EDK I required Microsoft compiler and Windows
  • restructured and enhanced build environment
  • Platform Configuration Database (PCD)
  • changes to SMM
  • ...

EDK II

Now, we transition to modern times.  Since roughly 2014 I think it's safe to say that the majority of systems in the marketplace have been based on EDK II.  Originally the EDK II was released under what I'm calling "The UDK Model".  Starting in 2018, the industry (read: Intel) has moved to the "Stable Tag Model".  Both approaches are explained below.

The UDK Model

The UEFI Development Kit (UDK) is a stable, tested release of EDK II.  Each UDK release lists its corresponding EDK II version in the release notes. Each release is available as a .zip file, and is also mapped to a branch of the EDK II Github project (e.g., https://github.com/tianocore/edk2/tree/UDK2017 for UDK2017).

Past releases of the UDK:

The Stable Tag Model

The Stable Tag model started with a desire for smaller, more frequent stable snapshots of the EDK II source tree than what the UDK model was providing.  More frequent snapshots means we have more flexibility for things like meeting new OS requirements, or contending with slips in silicon schedules.  (in theory at least; not like that ever happens)

Stable tags are created from edk2/master based on validation with various platforms. Stable tag names use the format edk2-stable<4 digit year><2 digit month> and occur roughly every three months, having started in August 2018.


Current list of stable tags:
There is also a page on the Tianocore wiki to track future stable tag releases:

For example:



So, there you have it.  Hopefully this historical walk-through has helped to explain where modern releases of the EDK II come from, and the significance of the tags.  The long history helps to put it all in context.

Post a Comment

Be sure to select an account profile (e.g. Google, OpenID, etc.) before typing your comment!