Recently Norman got surprised about a change in a framework class. The EmailMessage class now has a computed property instead of a method pair for the Source property. While that doesn't change the functionality much, it does prevent you from subclassing and overwriting the methods.
Let's make diffs between the different versions of the framework classes. First attempt is to use Introspection, but for that we have to collect all the class names, which may be error prone. With introspection, we miss modules, global functions and many details like parameter names.
So let's compare each version against the previous one:
Class DesktopContainer - method Show(DesktopWindow) + method Show() Class DesktopListBox + function CellBoldAt(Int64, Int64) as Boolean + method CellBoldAt(Int64, Int64, Boolean) + function CellItalicAt(Int64, Int64) as Boolean + method CellItalicAt(Int64, Int64, Boolean) + function CellUnderlineAt(Int64, Int64) as Boolean + method CellUnderlineAt(Int64, Int64, Boolean)
Class Dictionary - function Iterator() as Iterator Class MemoryBlock + method CopyBytes(MemoryBlock, Int64, Int64, Int64) Class PDFGraphics + computed property MiterLimit as Double + method FontName(Variant) Class GraphicsPath + function Bounds() as Xojo.Rect + function Contains(Double, Double) as Boolean + function Contains(Xojo.Point) as Boolean Class Graphics + computed property MiterLimit as Double + method FontName(Variant) Class DesktopApplication - computed property MDIWindow as MDIWindow + computed property MDIWindow as DesktopMDIWindow + function AddTrayItem(DesktopTrayItem) as Boolean + method RemoveTrayItem(DesktopTrayItem) + function WindowAt(Int64) as DesktopWindow Class DesktopContainer + function ControlAt(Int64) as Object - method DrawInto(Graphics, Int64, Int64, Boolean) + method DrawInto(Graphics, Int64, Int64) Class EmailMessage - function RawSource() as String - function Source() as String - method Source(String) + computed read only property RawSource as String + computed property Source as String Class DesktopMoviePlayer + computed property HasBorder as Boolean
Class JSONException + computed property Offset as UInt64
No significant changes in the observed framework parts.
We left away changes in attributes or changes in capitalization. And we miss database plugins and some other things like the whole Web and Mobile framework.
This was an interesting project and maybe it can be done again, but then maybe better with the documentation as the data source, so we know parameter names and cover more changes, like array or variant data types.