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)

DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxCarlos Cámara
 
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 - dclondonOlivier Friesse
 
DSpace RoadMap 2012
DSpace RoadMap 2012DSpace RoadMap 2012
DSpace RoadMap 2012Tim Donohue
 
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 DistroAll Things Open
 
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...Jody Garnett
 
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 PlatformJason 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 PlatformBasis Technology
 
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 RemarksJim St. Leger
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianMender.io
 
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 TwoRobert Anderson
 
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)DrupalCape
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentationDing Zhou
 
The Evolution of DITAs
The Evolution of DITAsThe Evolution of DITAs
The Evolution of DITAsIXIASOFT
 
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 SessionDocker, Inc.
 
Introducing to git
Introducing to gitIntroducing to git
Introducing to gitSajjad Rad
 
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.13Barton George
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Frank Karlitschek
 
[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 SurveyObeo
 
Suguk Southampton CodePlex - March 2014
Suguk Southampton   CodePlex - March 2014Suguk Southampton   CodePlex - March 2014
Suguk Southampton CodePlex - March 2014Steven Andrews
 
IT and community
IT and communityIT and community
IT and communityXioNoX
 

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

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 

Recently uploaded (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 

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)