Giter Club home page Giter Club logo

rust-prehistory's Introduction

Rust Prehistory Repo - November 2016

Hi,

This is a reconstruction -- extracted and very lightly edited -- of the "prehistory" of Rust development, when it was a personal project between 2006-2009 and, after late 2009, a Mozilla project conducted in private.

The purposes of publishing this now are:

  1. It might encourage someone with a hobby project to persevere
  2. It might be of interest to language or CS researchers someday
  3. It might settle some arguments / disputed historical claims

Edits made

I have edited it from its original archival forms only in the following ways:

  1. Converted from Monotone and Mercurial revision control
  2. Knitted together history by date, sometimes a bit roughly
  3. Deleted PDFs and other reference material I had put in the repository for reference, but I have no right to redistribute.
  4. Deleted commits or files that are, by my own judgment, too embarrassing or too worthless to publish.

Thus there are probably a number of historical states that are not bit-identical to the form they were at the moment of initial writing -- I know at least a couple edits might have broken the build in intermediate states -- but they're as close as I can reasonably make them. This is an honest attempt at a final word on the prehistory (and has taken some time to dig up!)

Caveats (i.e. "don't expect much")

While reading this -- if you're foolish enough to try -- keep in mind that I was balanced between near-total disbelief that it would ever come to anything and minuscule hope that if I kept at experiments and fiddling long enough, maybe I could do a thing.

I had been criticizing, picking apart, ranting about other languages for years, and making doodles and marginalia notes about how to do one "right" or "differently" to myself for almost as long. This lineage represents the very gradual coaxing-into-belief that I could actually make something that runs.

As such, there are long periods of nothing, lots of revisions of position, long periods of just making notes, arguing with myself, several false starts, digressions into minutiae that seem completely absurd from today's vantage point (don't get me started on how long I spent learning x86 mod r/m bytes and PE import table structures, why?) and self-important frippery.

The significant thing here is that I had to get to the point of convincing myself there was something there before bothering to show anyone; the uptick in work in mid-to-late 2009 is when Mozilla started funding me on the clock to work on it, but it's significant that there were years and years of just puttering around in circles, the kind of snowball-rolling that's necessary to go from nothing to "well .. maybe .."

I'd encourage reading it in this light: delusional dreams very gradually coming into focus, not any sort of grand plan being executed.

Linking history in Git

In order to browse the full history of the Rust project, you can link this history with that of the active Rust repository. To do so, clone the Rust repository, add a remote for the prehistory repository, then replace the first commit in the Rust repository with the last commit in the prehistory (the last one before the introduction of this README, to be more precise).

git clone https://github.com/rust-lang/rust.git
cd rust
git remote add prehistory https://github.com/graydon/rust-prehistory.git
git remote update prehistory
git replace c01efc669f09508b55eced32d3c88702578a7c3e c10ce161d8a58d78e10583fcea7e34eab0a518d0

Now you should be able to see, for example, the full history of what "hello, world" looked like in Rust over the years:

git log -p --follow src/test/ui/hello.rs

License

I'm publishing this work with, as far as I can tell, permission of its copyright holders: myself independently, and Mozilla Foundation. If you feel I shouldn't have published this for some reason, please contact me and I will happily discuss further. I tried to keep ownership and authorship straight while working.

The current work is thereby licensed under the terms of the MIT/ASL2 dual license scheme that the rest of Rust is licensed under. I do not expect anyone cares about the license status, but there it is. If you feel like reviving it for use in some sort of exercise in self-punishment, knock yourself out.

-Graydon Hoare, November 2016

rust-prehistory's People

Contributors

brendaneich avatar froystig avatar graydon avatar lambda avatar mbebenita avatar nagexiucai avatar spastorino avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.