On Tuesday, 1 April 2014 at 07:01:20 UTC, Vladimir Panteleev
It is my great pleasure to announce a new feature addition to
the tool Digger.
Digger's goal is to be able to build D versions from any point
in D's history. As it has already conquered the present
(building D from git master) and past (building D from any git
commit), only one final frontier remained: the future!
Although this might sound like an impossible feat which would
violate causality, recent advancements in D-wave quantum
tunnelling have made this possible and safe (mostly), and I've
put together a simple implementation.
I've tried it out, and it works on my machine. However, due to
there being an infinite number of possible eventualities, user
input is required: whereas before only a timestamp or version
number sufficed, to utilise this feature the user must select
the desired features that their future D version must have, and
Digger shall locate a timeline where D has the selected
features, and tunnel it across, onto the user's hard drive.
Here is what the user interface looks like (fragment):
Note that due to technical reasons, Digger can only lock on to
timelines with additions proposed at the moment of tunnelling.
Nevertheless, these are exciting times! With this prescient
capability, we can find regressions before they end up in D, or
predict proposal conflicts before they materialise!
If you'd like to give it a spin, the source repository is here:
Pre-built Windows binaries are also available:
Launch digger-web to access the user interface!
Further improvements can be expected in the near future, and
feedback is welcome as always. Dig safely!
This reminds me a lot of an application of prescient computing
I've seen out of a MIT + NSA collaboration.
By simply reversing SHA-1 hashes from the future of a git
changelog, they were able to guess the content of future commits.
Because of hash collisions multiplicity, user guidance was
actually needed, but this was alleviated by the use of a longest
common sub-string algorithm on all patch candidates (which is
were I told them it would be way cleaner to write this with D