That's a good question. It boils down to the definition of the word release. In software development the word release means something different than it does for general public.
Software is just a collection of text files containing the source code. The source code lives in a central repository to be shared with all the developers. Developers can download the source code to work on it locally on their machines and then upload it again. On this central repository there are also a lot of so called 'branches' to aid with the development process. Generally there is a master branch which contains the code that is currently in production. Then, there could also be a multitude of support branches and there are so called feature branches. Whenever a developer starts working on a new feature, he creates a separate branch for it. The idea behind it is that you can work on a feature without bothering other developers that might work on something else with it and that only finished features end up in the master branch. It is vital that a master branch always only contain production ready code. At any moment someone should be able to release the master branch and all the features that are finished up to that point. Generally a feature has to undergo a whole bunch of tests to determine whether or not it's good enough to be merged to the master branch.
This source code needs to be compiled to machine code or assembly before it can be executed. This compiled executable is referred to as a build. During development the source code is built very often in the process. You build it locally on your machine every time you want to see your own end result. You also have it built by a dedicated server every time you upload your code to the central repository. You can build individual feature branches to see if they work properly, and you can build the master branch to see if all the finished features are working well together. Many of the builds created are just for internal testing by the development team. But whenever a built is send out to be installed on machines outside of the development team, this build is called a release. As a developer, you release a build. It doesn't matter whether that build only makes it to the alpha phase, to the beta phase, to GM or all the way to production. For a developer the release is the same. A developer might not even know which build makes it to what phase.
All a developer has to care about is that no unfinished features make it to the master branch. And that brings me down to the questionable choices Apple made here. How the hell does a Clock widget that clearly isn't working end up in the master branch!? It should not have made it past internal testing at all!