SlideShare a Scribd company logo
1 of 38
Download to read offline
Sociomantic & D(u)
Leandro "Luca" Lucarella
Technical Development Lead
Introduction
• This talk is about D's history
• This talk is about Sociomantic D-related history
• This talk is about my Sociomantic & D-related history
• This talk is about the now
• This talk is about the future!
2/38
Sociomantic & D(u)
The Big Bang
• Dec 8, 2001: D 0.00
• First public release of D / DMD
• Yes, not even 0.01
• Yes, only 2 digits after the dot
• Changelog:
New/Changed Features
* Initial release
3/38
Sociomantic & D(u)
Life Starts Growing
• Jan 15, 2002: D 0.15 "I've finally got packages implemented"
• Mar 29, 2002: D 0.24 "Release source to lexer and parser"
• Apr 10, 2002: D 0.26 "implement delegates"
• Apr 23, 2002: D 0.29 "Released the front end compiler source"
• Sep 8, 2002: D 0.40 "Implemented templates"
• Jan 27, 2003: D 0.51 "Added template value parameters (as
opposed to just type parameters)"
• Feb 25, 2003: D 0.57 "Added function literals, nested functions,
closures"
• May 10, 2003: D 0.63 "Added linux version"
4/38
Sociomantic & D(u)
The First Dinosaurs
• Aug 11, 2003: D 0.69 "Added dchar keyword, Added bool as an
alias for bit"
• Sep 3, 2003: D 0.71 "Added foreach statement"
• Sep 18, 2003 D 0.73 "Added static asserts, Added properties"
• Jan 2, 2004 D 0.77 "Added typeof, pragmas, template alias
parameters"
• May 17, 2004 D 0.89 "Mixins added"
• May 19, 2005 D 0.124 "Added static if and iftype" (iftype???)
• Jun 7, 2005 D 0.126 "=== now deprecated, replaced with is, add
--help"
• Me Me Me! This is more or less when I discovered D.
5/38
Sociomantic & D(u)
The Methorite is Approaching...
• Mar 2006 D 0.149 "Changed on_scope_XXX to scope(XXX), added
limited support for implicit function template instantiation"
Sociomantic founders (to be) PhD project that will lead them to D
when PHP starts choking at data crunching
• May 2006 D 0.157 "Partial Dwarf symbol debug info now
generated for Linux"
First commits to Tango (by then, a stealth-mode project)
• Jul 2006 D 0.163 "Imports now default to private instead of public.
Added static imports, renamed imports, and selective importing"
(a little buggy, but finally fixed 10 years later)
• Dec 2006 D 0.178 Last 0.xxx release
6/38
Sociomantic & D(u)
Andrei Alexandrescu talks with Walter Bright about getting
involved in D
7/38
Sociomantic & D(u)
The Short Story of D1
• Jan 2007 D 1.00!!!
• No interesting changelog, arbitrary tag
• Tango announced publicly a few days after this release
• Feb 2007 D 1.006 "Compile time execution of functions"
• Apr 2007 D 1.011 "Added keywords ref and macro"
• First Tango release (0.97 RC1)
• Jun 2007 D 2.000 forked "Added const, invariant, and final"
• Major and controversial breaking change
• D1 feature freeze (only small and mostly non-breaking changes)
8/38
Sociomantic & D(u)
Controversial Times
• Mid 2007 - late 2008 a dark time for D
• The raise of the Phobos vs. Tango battles
• Some people didn't like the new const-system
• A D1-derived language without const was even started: Amber
• In stealth-mode (AFAIK it never saw the light)
• Developed mainly by the LDC and Tango teams
• New frontend written from the scratch and self hosted
• Used Tango runtime and as the standard library
• C and LLVM backends
• It was quite advanced, not just a prototype
9/38
Sociomantic & D(u)
Time for Choices
• Aug 2008 D 1.034 / 2.018 First Tango/D Conference in Poland
• First founder question asked in Tango forums (linking problems)
• I start working on my thesis (CDGC)
• D2 + Phobos
• No version control / sources not buildable
• Mostly still a one-man show / hard to contribute
• Focused on new features and experimentation
10/38
Sociomantic & D(u)
• D1 + Tango
• Version-control in Dsource
• Community-driven / several contributors / easy to contribute
• Focused on stability and usability
11/38
Sociomantic & D(u)
Sociomantic Era Begins
• Sep 2008 D 2.020 "immutable implemented"
• First version using Druntime (a fork of Tango runtime)
• Nov 2008 D 2.021 "Added -safe and range support to foreach"
• Mar 2009 D 1.041 / 2.026 "Added buildable dmd source"
• Feb 2009 D 1.040 / 2.025 "Added Mac OSX support"
• First issue opened in Tango by Sociomantic's founders
• Apr 2009 D 1.044 / 2.029 / Sociomantic Labs is founded
• May 2009 D 1.045 / 2.030 "classic global storage now defaults to
TLS"
• First patch submitted to Tango by Sociomantic's founders
12/38
Sociomantic & D(u)
• Aug 2009 D 1.046 / 2.031 "Warning on no return expr; is now an
error"
• First Sociomantic employee: D developer (to be)
13/38
Sociomantic & D(u)
Past and Future, Opening Roads
• Oct 2009 D 2.033 "Phobos is now using the Boost 1.0 license"
• Oct 2009 D 1.050 / 2.035 First releases from SVN / dsource
• Feb 2010 D 1.056 / 2.040
• DMD beta mailing list created
• Last Tango release (0.99.9)
• Jun 2010 D 1.062 / 2.047
• First 64 bit commit "64 bit start"
• The D Programming Language book comes out
• Brad Robert adds the skeleton of a public test suite
14/38
Sociomantic & D(u)
CDGC's 15 Minutes
• Sep 2010 D 1.064 / 2.049 CDGC is finished
• Oct 2010 D 1.065 / 2.050 "Added relaxed purity checking rules"
• Submitted CDGC Tango integration patches
• Nov 2010
• Sean Kelly's publishes experimental CDGC branch in Druntime
• Jan 2011 D 1.066 / 2.051 "Both druntime and phobos now build
successfully with dmd -m64. Still somewhat behind dmd1, very
little executes correctly still"
• CDGC merged to Tango
• DMD project moves to GitHub
15/38
Sociomantic & D(u)
Sociomantic and Me
• Apr 2011 D 1.067 / 2.052 "64 bit support for Linux"
• Sociomantic starts playing with CDGC. freenode #d.tango:
Apr28 13:04| Suprano: luca_, I am using your cdgc right no
• May 2011 D 1.068 / 2.053 "Added FreeBSD support"
• First formal contact with Sociomantic
• Oct 2011 D 1.070 / 2.055 "Add support for Mac OS X 10.7 Lion"
• I start working for Sociomantic
• 4th D developer, ~15th overall in the company
16/38
Sociomantic & D(u)
64bit Migration
• Dec 2011 D 1.072 / 2.057 D1 announced to be discontinued in 1
year
We start migrating to 64bit ("first 64bit, then D2")
• Jan 2012 Don Clugston joins Sociomantic (5th D developer)
• Feb 2012 D 1.073 / 2.058 Don's lists of 64bit bugs become
popular. Example:
8060 (involves mixing ints+floats)
8091: (involves nested ? : expressions)
7478: (memory corruption, affects xfbuild)
8078: (Luca's out contract regression)
7546: (64bit, 0.0 != -0.0)
5809: (wrong code for *p == 0 with 64 bit)
17/38
Sociomantic & D(u)
8095: horrific optimizer bug, see below
partial fix of 5570, 64bit extern(C) ABI
18/38
Sociomantic & D(u)
64bit Migration Finished
• By Jun 2012 D 1.074 / 2.059
• More than 6 months of work
• No changes in the language involved, only passing -m64 when
compiling
• Most 64bit bugs involve bad code generation and/or corruption
• Lots of pain, but at the end we pushed for a reliable 64bit DMD
compiler
(we contributed our beta-testing suffering to the community)
19/38
Sociomantic & D(u)
The End, The Beginning
• Dec 2012 D 1.076 Last D1 release. RIP D1... or not?
20/38
Sociomantic & D(u)
• Feb 2013 D 1.076+++
First informal internal D1 "release":
David asked me for this but might be also useful for other
people. I compiled the more recent DMD1 with the aditional
Don's merge for the fix to the regression Ben found
(http://d.puremagic.com/issues/show_bug.cgi?id=9568).
You can download it from here:
http://192.168.2.152/dmd-v1.077-devel-6c4ef55
Of course it was a 64bit bug: Issue 9568 - [64bit] wrong code for
scope(exit)
21/38
Sociomantic & D(u)
2013 Miscelaneous
• Feb 2013 D 2.062 First release with Andrej Mitrović's beautiful
changelog
• May 2013 D 2.063
• First global D Conference: DConf2013
• Two Sociomantic speakers
• First Sociomantic real analysis about D2 migration after DConf
• DMD releases start to be done much less frequently and include
tons of changes
• Jun 2013 Mihails Strasuns (dicebot) joins Sociomantic (10th D
developer)
• Dec 2013 D 1.076+git20130909.c8427d6+sociomantic1 /
2.064
22/38
Sociomantic & D(u)
• First internal DMD release via deb repository
23/38
Sociomantic & D(u)
D1's Not Dead
• Feb 2014 D 1.0776.s1 / 2.065
• First formal internal DMD release
• 17 internal releases since then (one release every ~1.5 months
in average)
• Lately more like one release every 3 months
• May 2014
• Andrej Mitrović joins Sociomantic (17th D developer)
• DConf2014
• Two Sociomantic speakers again
• We manage to talk about D1 in a D2 conference again
24/38
Sociomantic & D(u)
But the Assassination is Planned...
• Mar 2014
• Serious plan to migrate to D2 started
• Jun 2014 D 1.076.s3 "add -v2 switch"
• We have an official plan (Mihails is tricked into being the main
executor)
• We can't afford stop development or duplicating the stuff
• Must have code that works with both D1 and D2 as a
transitional step
25/38
Sociomantic & D(u)
• Oct 2014 D 1.077.s7 / 2.066 "Warn about const storage class
when using -v2"
• Mihails' experimental port of CDGC to D2
• d1to2fix tool created
26/38
Sociomantic & D(u)
D2 Migration Starts Rolling
• Mar 2015 D 2.067 (we stick internally to 2.066 for stability)
• Migration of our big internal base library (Ocean) starts
• DIP75: Release Process is created
• Iain Buclaw joins Sociomantic (but not as a D developer...
TRAITOR!)
• Apr 2015 D 1.077.s13 / D 2.066.1
• Backport deprecated("message") to D1
• First official DMD point (stable) release
• May 2015
• First internal Tango release that's D2 forward-compatible
27/38
Sociomantic & D(u)
• DConf2015: Two speakers again, one talk about the migration
process
28/38
Sociomantic & D(u)
Ch-Ch-Changes
• Jul 2015 2.066.1.s1
• First internal DMD2 bugfix release
• Since then we've done 5 internal DMD2 releases (3 for 2.066, 2
for 2.070)
• Aug 2015 D 2.068.0
• Andrei leaves Facebook to work on the D Language and
Foundation
• Sep 2015 D 1.077.s16 / 2.068.1
• Ocean migration complete
• Nov 2015 D 2.069.0
• DMD has been ported to D
29/38
Sociomantic & D(u)
• Any bugfix in DMD now must be backported completely
manually to DMD1
(still in C++, of course)
30/38
Sociomantic & D(u)
Life On Mars
• Jan 2016 D 2.070.0 / 2.066.s3
• Two applications fully ported to D2
• Sociomantic and D Foundation talks start (initially about LTS
releases)
• Mathias Lang approved to contribute to DMD2 via Tsunami
Program
• Feb 2016 D 2.070.1 / 2.070.1.s1
• Move to D 2.070 (some breaking changes need code updates)
• Work started on Ocean Buffer replacement for D1 stomping
arrays
31/38
Sociomantic & D(u)
Run On Mars
• Mar 2016 D 2.070.2 TangOcean
• We merge Tango user library into Ocean
• We only use Tango runtime as the Druntime for D1
• Easier to port having a user library separate from the runtime
• The runtime is 100% D1, the user library is both D1 and D2
compatible
32/38
Sociomantic & D(u)
• Apr 2016 (like... last month) D 2.071.0 / 2.070.s2
• Static, selected and renamed imports fixed (APPLAUSE!!!)
• 2 more applications fully ported (4 in total)
• 1 application has a horrible performance regression (needs
investigation)
• 2 applications compiled with D2 running instances LIVE!
33/38
Sociomantic & D(u)
The Now
• DConf2016: First DConf co-organized by Sociomantic
Also first DConf held in Europe
• Two years since we started planning D2 migration
• One year++ since we started the serious migration work
• Still a long road to go
• 4 from 5 core libraries ported (80%)
• 3 from 6 utility libraries ported (50%)
• 4 from 32 applications ported (12.5%), and we started with the
simplests
• We need to address the performance regressions
34/38
Sociomantic & D(u)
• For every project we ported to D2, every PR is tested in both D1
and D2
• ~30 D developers (and growing...)
35/38
Sociomantic & D(u)
The Future
• Ocean open source release!
• Scheduled for June
• Bits from Tango must stay BSD
• Dual license for our code: BSD + Boost (Phobos-friendly)
• More collaboration with D community and D Foundation
• We are having monthly meetings with Martin Nowak
• All the work we did for Tango / internal DMD releases now can
contributed
• More collaboration and open sourcing through the Tsunami
program
36/38
Sociomantic & D(u)
• We'll probably need to work on the GC for the real-time
applications
• More D(2) developers: YOU join Sociomantic
(we are hiring! https://careers.sociomantic.com/)
37/38
Sociomantic & D(u)
The End... Of This Talk
Thank you, Questions???
NO?
REALLY?
Next talk...
38/38
Sociomantic & D(u)

More Related Content

Similar to DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)

Manage you media assets in Drupal with Scald module - dclondon
Manage you media assets in Drupal with Scald module - dclondonManage you media assets in Drupal with Scald module - dclondon
Manage you media assets in Drupal with Scald module - dclondon
Olivier Friesse
 
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics PlatformAutopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Jason Letourneau
 
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics PlatformAutopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Basis Technology
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentation
Ding Zhou
 
Xps 13 developer edition - slide share presentation-02.20.13
Xps 13 developer edition  - slide share presentation-02.20.13Xps 13 developer edition  - slide share presentation-02.20.13
Xps 13 developer edition - slide share presentation-02.20.13
Barton George
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
Frank Karlitschek
 

Similar to DConf 2016: Sociomantic & D by Leandro Lucarella (extended version) (20)

DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital Toolbox
 
Manage you media assets in Drupal with Scald module - dclondon
Manage you media assets in Drupal with Scald module - dclondonManage you media assets in Drupal with Scald module - dclondon
Manage you media assets in Drupal with Scald module - dclondon
 
DSpace RoadMap 2012
DSpace RoadMap 2012DSpace RoadMap 2012
DSpace RoadMap 2012
 
libreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux DistrolibreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux Distro
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
 
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics PlatformAutopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
 
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics PlatformAutopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
Autopsy 3: Free Open Source End-to-End Windows-based Digital Forensics Platform
 
DPDK Summit - 08 Sept 2014 - Intel - Closing Remarks
DPDK Summit - 08 Sept 2014 - Intel - Closing RemarksDPDK Summit - 08 Sept 2014 - Intel - Closing Remarks
DPDK Summit - 08 Sept 2014 - Intel - Closing Remarks
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 
DITA-OT 2.x: Discover What's New in Toolkit Two
DITA-OT 2.x: Discover What's New in Toolkit TwoDITA-OT 2.x: Discover What's New in Toolkit Two
DITA-OT 2.x: Discover What's New in Toolkit Two
 
Happy Loving Couples - Drupal Module Selection(11/02/23 - J Wagener)
Happy Loving Couples - Drupal Module Selection(11/02/23 - J Wagener)Happy Loving Couples - Drupal Module Selection(11/02/23 - J Wagener)
Happy Loving Couples - Drupal Module Selection(11/02/23 - J Wagener)
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentation
 
The Evolution of DITAs
The Evolution of DITAsThe Evolution of DITAs
The Evolution of DITAs
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Introducing to git
Introducing to gitIntroducing to git
Introducing to git
 
Xps 13 developer edition - slide share presentation-02.20.13
Xps 13 developer edition  - slide share presentation-02.20.13Xps 13 developer edition  - slide share presentation-02.20.13
Xps 13 developer edition - slide share presentation-02.20.13
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
 
[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey
 
Suguk Southampton CodePlex - March 2014
Suguk Southampton   CodePlex - March 2014Suguk Southampton   CodePlex - March 2014
Suguk Southampton CodePlex - March 2014
 
IT and community
IT and communityIT and community
IT and community
 

Recently uploaded

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Recently uploaded (20)

%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 

DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)

  • 1. Sociomantic & D(u) Leandro "Luca" Lucarella Technical Development Lead
  • 2. Introduction • This talk is about D's history • This talk is about Sociomantic D-related history • This talk is about my Sociomantic & D-related history • This talk is about the now • This talk is about the future! 2/38 Sociomantic & D(u)
  • 3. The Big Bang • Dec 8, 2001: D 0.00 • First public release of D / DMD • Yes, not even 0.01 • Yes, only 2 digits after the dot • Changelog: New/Changed Features * Initial release 3/38 Sociomantic & D(u)
  • 4. Life Starts Growing • Jan 15, 2002: D 0.15 "I've finally got packages implemented" • Mar 29, 2002: D 0.24 "Release source to lexer and parser" • Apr 10, 2002: D 0.26 "implement delegates" • Apr 23, 2002: D 0.29 "Released the front end compiler source" • Sep 8, 2002: D 0.40 "Implemented templates" • Jan 27, 2003: D 0.51 "Added template value parameters (as opposed to just type parameters)" • Feb 25, 2003: D 0.57 "Added function literals, nested functions, closures" • May 10, 2003: D 0.63 "Added linux version" 4/38 Sociomantic & D(u)
  • 5. The First Dinosaurs • Aug 11, 2003: D 0.69 "Added dchar keyword, Added bool as an alias for bit" • Sep 3, 2003: D 0.71 "Added foreach statement" • Sep 18, 2003 D 0.73 "Added static asserts, Added properties" • Jan 2, 2004 D 0.77 "Added typeof, pragmas, template alias parameters" • May 17, 2004 D 0.89 "Mixins added" • May 19, 2005 D 0.124 "Added static if and iftype" (iftype???) • Jun 7, 2005 D 0.126 "=== now deprecated, replaced with is, add --help" • Me Me Me! This is more or less when I discovered D. 5/38 Sociomantic & D(u)
  • 6. The Methorite is Approaching... • Mar 2006 D 0.149 "Changed on_scope_XXX to scope(XXX), added limited support for implicit function template instantiation" Sociomantic founders (to be) PhD project that will lead them to D when PHP starts choking at data crunching • May 2006 D 0.157 "Partial Dwarf symbol debug info now generated for Linux" First commits to Tango (by then, a stealth-mode project) • Jul 2006 D 0.163 "Imports now default to private instead of public. Added static imports, renamed imports, and selective importing" (a little buggy, but finally fixed 10 years later) • Dec 2006 D 0.178 Last 0.xxx release 6/38 Sociomantic & D(u)
  • 7. Andrei Alexandrescu talks with Walter Bright about getting involved in D 7/38 Sociomantic & D(u)
  • 8. The Short Story of D1 • Jan 2007 D 1.00!!! • No interesting changelog, arbitrary tag • Tango announced publicly a few days after this release • Feb 2007 D 1.006 "Compile time execution of functions" • Apr 2007 D 1.011 "Added keywords ref and macro" • First Tango release (0.97 RC1) • Jun 2007 D 2.000 forked "Added const, invariant, and final" • Major and controversial breaking change • D1 feature freeze (only small and mostly non-breaking changes) 8/38 Sociomantic & D(u)
  • 9. Controversial Times • Mid 2007 - late 2008 a dark time for D • The raise of the Phobos vs. Tango battles • Some people didn't like the new const-system • A D1-derived language without const was even started: Amber • In stealth-mode (AFAIK it never saw the light) • Developed mainly by the LDC and Tango teams • New frontend written from the scratch and self hosted • Used Tango runtime and as the standard library • C and LLVM backends • It was quite advanced, not just a prototype 9/38 Sociomantic & D(u)
  • 10. Time for Choices • Aug 2008 D 1.034 / 2.018 First Tango/D Conference in Poland • First founder question asked in Tango forums (linking problems) • I start working on my thesis (CDGC) • D2 + Phobos • No version control / sources not buildable • Mostly still a one-man show / hard to contribute • Focused on new features and experimentation 10/38 Sociomantic & D(u)
  • 11. • D1 + Tango • Version-control in Dsource • Community-driven / several contributors / easy to contribute • Focused on stability and usability 11/38 Sociomantic & D(u)
  • 12. Sociomantic Era Begins • Sep 2008 D 2.020 "immutable implemented" • First version using Druntime (a fork of Tango runtime) • Nov 2008 D 2.021 "Added -safe and range support to foreach" • Mar 2009 D 1.041 / 2.026 "Added buildable dmd source" • Feb 2009 D 1.040 / 2.025 "Added Mac OSX support" • First issue opened in Tango by Sociomantic's founders • Apr 2009 D 1.044 / 2.029 / Sociomantic Labs is founded • May 2009 D 1.045 / 2.030 "classic global storage now defaults to TLS" • First patch submitted to Tango by Sociomantic's founders 12/38 Sociomantic & D(u)
  • 13. • Aug 2009 D 1.046 / 2.031 "Warning on no return expr; is now an error" • First Sociomantic employee: D developer (to be) 13/38 Sociomantic & D(u)
  • 14. Past and Future, Opening Roads • Oct 2009 D 2.033 "Phobos is now using the Boost 1.0 license" • Oct 2009 D 1.050 / 2.035 First releases from SVN / dsource • Feb 2010 D 1.056 / 2.040 • DMD beta mailing list created • Last Tango release (0.99.9) • Jun 2010 D 1.062 / 2.047 • First 64 bit commit "64 bit start" • The D Programming Language book comes out • Brad Robert adds the skeleton of a public test suite 14/38 Sociomantic & D(u)
  • 15. CDGC's 15 Minutes • Sep 2010 D 1.064 / 2.049 CDGC is finished • Oct 2010 D 1.065 / 2.050 "Added relaxed purity checking rules" • Submitted CDGC Tango integration patches • Nov 2010 • Sean Kelly's publishes experimental CDGC branch in Druntime • Jan 2011 D 1.066 / 2.051 "Both druntime and phobos now build successfully with dmd -m64. Still somewhat behind dmd1, very little executes correctly still" • CDGC merged to Tango • DMD project moves to GitHub 15/38 Sociomantic & D(u)
  • 16. Sociomantic and Me • Apr 2011 D 1.067 / 2.052 "64 bit support for Linux" • Sociomantic starts playing with CDGC. freenode #d.tango: Apr28 13:04| Suprano: luca_, I am using your cdgc right no • May 2011 D 1.068 / 2.053 "Added FreeBSD support" • First formal contact with Sociomantic • Oct 2011 D 1.070 / 2.055 "Add support for Mac OS X 10.7 Lion" • I start working for Sociomantic • 4th D developer, ~15th overall in the company 16/38 Sociomantic & D(u)
  • 17. 64bit Migration • Dec 2011 D 1.072 / 2.057 D1 announced to be discontinued in 1 year We start migrating to 64bit ("first 64bit, then D2") • Jan 2012 Don Clugston joins Sociomantic (5th D developer) • Feb 2012 D 1.073 / 2.058 Don's lists of 64bit bugs become popular. Example: 8060 (involves mixing ints+floats) 8091: (involves nested ? : expressions) 7478: (memory corruption, affects xfbuild) 8078: (Luca's out contract regression) 7546: (64bit, 0.0 != -0.0) 5809: (wrong code for *p == 0 with 64 bit) 17/38 Sociomantic & D(u)
  • 18. 8095: horrific optimizer bug, see below partial fix of 5570, 64bit extern(C) ABI 18/38 Sociomantic & D(u)
  • 19. 64bit Migration Finished • By Jun 2012 D 1.074 / 2.059 • More than 6 months of work • No changes in the language involved, only passing -m64 when compiling • Most 64bit bugs involve bad code generation and/or corruption • Lots of pain, but at the end we pushed for a reliable 64bit DMD compiler (we contributed our beta-testing suffering to the community) 19/38 Sociomantic & D(u)
  • 20. The End, The Beginning • Dec 2012 D 1.076 Last D1 release. RIP D1... or not? 20/38 Sociomantic & D(u)
  • 21. • Feb 2013 D 1.076+++ First informal internal D1 "release": David asked me for this but might be also useful for other people. I compiled the more recent DMD1 with the aditional Don's merge for the fix to the regression Ben found (http://d.puremagic.com/issues/show_bug.cgi?id=9568). You can download it from here: http://192.168.2.152/dmd-v1.077-devel-6c4ef55 Of course it was a 64bit bug: Issue 9568 - [64bit] wrong code for scope(exit) 21/38 Sociomantic & D(u)
  • 22. 2013 Miscelaneous • Feb 2013 D 2.062 First release with Andrej Mitrović's beautiful changelog • May 2013 D 2.063 • First global D Conference: DConf2013 • Two Sociomantic speakers • First Sociomantic real analysis about D2 migration after DConf • DMD releases start to be done much less frequently and include tons of changes • Jun 2013 Mihails Strasuns (dicebot) joins Sociomantic (10th D developer) • Dec 2013 D 1.076+git20130909.c8427d6+sociomantic1 / 2.064 22/38 Sociomantic & D(u)
  • 23. • First internal DMD release via deb repository 23/38 Sociomantic & D(u)
  • 24. D1's Not Dead • Feb 2014 D 1.0776.s1 / 2.065 • First formal internal DMD release • 17 internal releases since then (one release every ~1.5 months in average) • Lately more like one release every 3 months • May 2014 • Andrej Mitrović joins Sociomantic (17th D developer) • DConf2014 • Two Sociomantic speakers again • We manage to talk about D1 in a D2 conference again 24/38 Sociomantic & D(u)
  • 25. But the Assassination is Planned... • Mar 2014 • Serious plan to migrate to D2 started • Jun 2014 D 1.076.s3 "add -v2 switch" • We have an official plan (Mihails is tricked into being the main executor) • We can't afford stop development or duplicating the stuff • Must have code that works with both D1 and D2 as a transitional step 25/38 Sociomantic & D(u)
  • 26. • Oct 2014 D 1.077.s7 / 2.066 "Warn about const storage class when using -v2" • Mihails' experimental port of CDGC to D2 • d1to2fix tool created 26/38 Sociomantic & D(u)
  • 27. D2 Migration Starts Rolling • Mar 2015 D 2.067 (we stick internally to 2.066 for stability) • Migration of our big internal base library (Ocean) starts • DIP75: Release Process is created • Iain Buclaw joins Sociomantic (but not as a D developer... TRAITOR!) • Apr 2015 D 1.077.s13 / D 2.066.1 • Backport deprecated("message") to D1 • First official DMD point (stable) release • May 2015 • First internal Tango release that's D2 forward-compatible 27/38 Sociomantic & D(u)
  • 28. • DConf2015: Two speakers again, one talk about the migration process 28/38 Sociomantic & D(u)
  • 29. Ch-Ch-Changes • Jul 2015 2.066.1.s1 • First internal DMD2 bugfix release • Since then we've done 5 internal DMD2 releases (3 for 2.066, 2 for 2.070) • Aug 2015 D 2.068.0 • Andrei leaves Facebook to work on the D Language and Foundation • Sep 2015 D 1.077.s16 / 2.068.1 • Ocean migration complete • Nov 2015 D 2.069.0 • DMD has been ported to D 29/38 Sociomantic & D(u)
  • 30. • Any bugfix in DMD now must be backported completely manually to DMD1 (still in C++, of course) 30/38 Sociomantic & D(u)
  • 31. Life On Mars • Jan 2016 D 2.070.0 / 2.066.s3 • Two applications fully ported to D2 • Sociomantic and D Foundation talks start (initially about LTS releases) • Mathias Lang approved to contribute to DMD2 via Tsunami Program • Feb 2016 D 2.070.1 / 2.070.1.s1 • Move to D 2.070 (some breaking changes need code updates) • Work started on Ocean Buffer replacement for D1 stomping arrays 31/38 Sociomantic & D(u)
  • 32. Run On Mars • Mar 2016 D 2.070.2 TangOcean • We merge Tango user library into Ocean • We only use Tango runtime as the Druntime for D1 • Easier to port having a user library separate from the runtime • The runtime is 100% D1, the user library is both D1 and D2 compatible 32/38 Sociomantic & D(u)
  • 33. • Apr 2016 (like... last month) D 2.071.0 / 2.070.s2 • Static, selected and renamed imports fixed (APPLAUSE!!!) • 2 more applications fully ported (4 in total) • 1 application has a horrible performance regression (needs investigation) • 2 applications compiled with D2 running instances LIVE! 33/38 Sociomantic & D(u)
  • 34. The Now • DConf2016: First DConf co-organized by Sociomantic Also first DConf held in Europe • Two years since we started planning D2 migration • One year++ since we started the serious migration work • Still a long road to go • 4 from 5 core libraries ported (80%) • 3 from 6 utility libraries ported (50%) • 4 from 32 applications ported (12.5%), and we started with the simplests • We need to address the performance regressions 34/38 Sociomantic & D(u)
  • 35. • For every project we ported to D2, every PR is tested in both D1 and D2 • ~30 D developers (and growing...) 35/38 Sociomantic & D(u)
  • 36. The Future • Ocean open source release! • Scheduled for June • Bits from Tango must stay BSD • Dual license for our code: BSD + Boost (Phobos-friendly) • More collaboration with D community and D Foundation • We are having monthly meetings with Martin Nowak • All the work we did for Tango / internal DMD releases now can contributed • More collaboration and open sourcing through the Tsunami program 36/38 Sociomantic & D(u)
  • 37. • We'll probably need to work on the GC for the real-time applications • More D(2) developers: YOU join Sociomantic (we are hiring! https://careers.sociomantic.com/) 37/38 Sociomantic & D(u)
  • 38. The End... Of This Talk Thank you, Questions??? NO? REALLY? Next talk... 38/38 Sociomantic & D(u)