SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Sociomantic & D(u)
Leandro "Luca" Lucarella
Technical Development Lead
Introduction
• D's history
• Sociomantic's D-related history
• My Sociomantic & D-related history
• The now
• The future!
2/29
Sociomantic & D(u)
The Big Bang
• Dec 8, 2001: D 0.00
• First public release of D / DMD
• Changelog:
New/Changed Features
* Initial release
• Yes, not even 0.01
• Yes, only 2 digits after the dot
• We are close to D's 15th birthday!
3/29
Sociomantic & D(u)
The Beast Crowls Out Of The Ocean
• Jan 2002 D 0.15
• "I've finally got packages implemented"
• Apr 2002 D 0.29
• "Released the front and compiler source"
• Sep 2002 D 0.40
• "Implemented templates"
• May 2003 D 0.63
• "Added linux version"
4/29
Sociomantic & D(u)
The Dinosaurs
• Sep 2003 D 0.71
• "Added foreach statement"
• May 2004 D 0.89
• "Mixins added"
• Sometime between 2004 and 2005
• Me Me Me! This is more or less when I discovered D
• May 2005 D 0.124
• "Added static if and iftype" (iftype???)
5/29
Sociomantic & D(u)
The Meteorite is Approaching...
• Mar 2006 D 0.149 "Changed on_scope_XXX to scope(XXX)"
• Sociomantic founders (to be) start PhD project
• May 2006 D 0.157 "Partial Dwarf symbol debug info for Linux"
• First commits to Tango (in stealth-mode)
• Jul 2006 D 0.163 "Added static, renamed and selective imports"
• A little buggy, but finally fixed 10 years later
• Dec 2006 D 0.178 Last 0.xxx release
• Andrei's back
6/29
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)
7/29
Sociomantic & D(u)
Controversial Times
• Mid 2007 - late 2008 a dark time for D
• The rise 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)
8/29
Sociomantic & D(u)
Time for Choices
• Aug 2008 D 1.034 / 2.018 First Tango/D Conference (in Poland)
• First question from Sociomantic founder asked in Tango forums
• I start working on my thesis (CDGC)
D2 + Phobos D1 + Tango
• No version-control
• Mostly still a one-man
show
• Hard to contribute
• Focused on new features
and experimentation
• Version-control in Dsource
• Community-driven
• Easy to contribute
• Focused on stability and usability
9/29
Sociomantic & D(u)
Sociomantic Era Begins
• Feb 2009 D 1.040 / 2.025
• 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 "global storage now defaults to TLS"
• First patch submitted to Tango by Sociomantic's founders
• Aug 2009 D 1.046 / 2.031
• First Sociomantic employee: D developer (to be)
10/29
Sociomantic & D(u)
Opening Roads
• Sep 2008 D 2.020
• "First version using Druntime"
• Mar 2009 D 1.041 / 2.026
• "Added buildable dmd source"
• Oct 2009 D 2.033
• "Phobos is now using the Boost 1.0 license"
• Dec 2009 D 1.050 / 2.035
• First releases from SVN / dsource
11/29
Sociomantic & D(u)
CDGC's 15 Minutes
• Sep 2010 D 1.064 / 2.049
• CDGC is finished
• Oct 2010 D 1.065 / 2.050
• Submitted CDGC Tango integration patches
• Nov 2010
• Sean Kelly's publishes experimental CDGC branch in Druntime
• Jan 2011 D 1.066 / 2.051
• DMD project moves to GitHub
• CDGC merged to Tango
12/29
Sociomantic & D(u)
Sociomantic and Me
• Apr 2011 D 1.067 / 2.052
• Sociomantic starts playing with CDGC. freenode #d.tango:
Apr28 13:04| Suprano: luca_, I am using
your cdgc right now :)
• May 2011 D 1.068 / 2.053
• First formal contact with Sociomantic
• Oct 2011 D 1.070 / 2.055
• I start working for Sociomantic
• 4th D developer, ~15th employee overall in the company
13/29
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")
• First 64bit commit in DMD only 1.5 years ago
• Fist (supposedly) working 64bit compiler for Linux only 8
months ago
• Probably the first serious users of the 64bit compiler
• Jan 2012 Don Clugston joins Sociomantic (5th D developer)
14/29
Sociomantic & D(u)
The Horror
• Feb 2012 D 1.073 / 2.058
• The term DBOTD becomes popular
• Don's lists of 64bit bugs become popular too. Real 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)
8095: horrific optimizer bug, see below
partial fix of 5570, 64bit extern(C) ABI
15/29
Sociomantic & D(u)
64bit Migration Finished
• Completed in Jun 2012 D 1.074 / 2.059
• More than 6 months of work
• No language changes, only adding -m64 when compiling
• Most 64bit bugs involve bad code generation and/or corruption
• Lots of pain, but we pushed for a reliable 64bit DMD compiler
(we contributed our beta-testing suffering to the community)
16/29
Sociomantic & D(u)
The End, The Beginning
• Dec 2012 D 1.076 Last D1 release. RIP D1... or not?
• 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)
17/29
Sociomantic & D(u)
2013 Miscellaneous
• May 2013 D 2.063
• First global D Conference: DConf2013
• Two Sociomantic speakers
• First real analysis of D2 migration at Sociomantic (after DConf)
• Jun 2013 Mihails (dicebot) joins Sociomantic (10th D developer)
• Dec 2013 D 1.076+git20130909.c8427d6+sociomantic1
• First internal DMD release via deb repository
18/29
Sociomantic & D(u)
D1's Not Dead
• Feb 2014 D 1.076.s1 / 2.065
• First formal internal DMD release
• 17 internal releases since then (every ~1.5 months in average)
• Lately more like one release every 3 months
• May 2014
• DConf2014
• Two Sociomantic speakers again
• We manage to talk about D1 in a D2 conference again
19/29
Sociomantic & D(u)
But the Assassination is Planned...
• Mar 2014
• Serious plan to migrate to D2 started
• We can't afford to stop development or to fork our codebase
• Code must work with both D1 and D2 as a transitional step
• Jun 2014 D 1.076.s3 "add -v2 switch"
• Official plan (dicebot is tricked into being the main executor)
• Oct 2014 D 1.077.s7 / 2.066 "-v2 warns on const storage class"
• Mihails' experimental port of CDGC to D2
• d1to2fix tool created
• Internal Tango migration starts
20/29
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
• Iain Buclaw joins Sociomantic (not a D developer... TRAITOR!)
• DIP75: Release Process is created
• Apr 2015 D 1.077.s13 / D 2.066.1
• First official DMD point (stable) release
• May 2015
• Tango migration finished
• DConf2015: Two speakers again, one talk about D2 migration
21/29
Sociomantic & D(u)
And It Keeps Rolling
• Jul 2015 2.066.1.s1
• First internal DMD2 bugfix release
• Since then we've done 5 internal DMD2 releases
• Sep 2015 D 1.077.s16 / 2.068.1
• Ocean migration complete
• Nov 2015 D 2.069.0
• DMD has been ported to D
• Bad for D1 bugfix backporting (still in C++, of course)
22/29
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
• Mathias Lang (geod) to contribute to DMD2 via Tsunami
• Feb 2016 D 2.070.1 / 2.070.1.s1
• Move to D 2.070 (some breaking changes need code updates)
• Work started on a Buffer replacement for D1 stomping arrays
23/29
Sociomantic & D(u)
TangOcean
• Mar 2016 D 2.070.2
• 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
• Runtime D1-only, the user library is both D1 and D2 compatible
24/29
Sociomantic & D(u)
It's ALIVE
Apr 2016 (last month) D 2.071.0 / 2.070.s2
• 2 more applications fully ported (4 in total)
• 2 applications compiled with D2 running instances LIVE!
• Some applications have performance regressions
• One performs better and use less memory
25/29
Sociomantic & D(u)
The Now
• We are at DConf2016
• First DConf co-organized by Sociomantic
• First DConf held in Europe
• 2 Sociomantic speakers again (+ 1 + 6 + 1)
• D2 Migration summary
• 3 years since we started thinking about D2 migration
• 2 years since we have a D2 migration plan
• 1++ years since we started the serious migration work
• CI to ensure projects that are moved to D2, stays D2
• ~30 D developers (and still growing...)
26/29
Sociomantic & D(u)
The Future
• Still a long road to go
• 4 from 5 core libraries ported (80%)
• 3 from 6 utility libraries ported (50%)
• 4 from 30++ applications ported (10~15%), the simplest ones
• And we are only talking about the transition phase
• We need to address the performance regressions
• We'll probably need to work on the GC for the real-time processes
• More D(2) developers: YOU join Sociomantic
(we are hiring! https://careers.sociomantic.com/)
27/29
Sociomantic & D(u)
Pull Request
• We want to merge back to D's community
• Ocean open source release! (Tsunami)
• 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
• More people contributing to the community (Tsunami)
• More open sourcing (Tsunami)
28/29
Sociomantic & D(u)
The End... Of This Talk
Thank you! Questions???
NO?
REALLY?
Next talk...
29/29
Sociomantic & D(u)

Contenu connexe

En vedette

En vedette (9)

Iernsdc reflexión
Iernsdc reflexiónIernsdc reflexión
Iernsdc reflexión
 
Fbtw mercadeo digital
Fbtw mercadeo digitalFbtw mercadeo digital
Fbtw mercadeo digital
 
Egipcios
EgipciosEgipcios
Egipcios
 
Biologia especifica septiembre_2010
Biologia especifica septiembre_2010Biologia especifica septiembre_2010
Biologia especifica septiembre_2010
 
Teoria Musical
Teoria  MusicalTeoria  Musical
Teoria Musical
 
Esquemaparaconsulta 110610171133-phpapp02
Esquemaparaconsulta 110610171133-phpapp02Esquemaparaconsulta 110610171133-phpapp02
Esquemaparaconsulta 110610171133-phpapp02
 
Portfolio
PortfolioPortfolio
Portfolio
 
Manual de uso sistema señalético Colegio Mayor Galileo Galilei
Manual de uso sistema señalético Colegio Mayor Galileo GalileiManual de uso sistema señalético Colegio Mayor Galileo Galilei
Manual de uso sistema señalético Colegio Mayor Galileo Galilei
 
Programa Públic Contractació
Programa Públic ContractacióPrograma Públic Contractació
Programa Públic Contractació
 

Similaire à DConf 2016: Sociomantic & D by Leandro Lucarella

DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)
DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)
DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)Andrei Alexandrescu
 
[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
 
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...ESEM 2014
 
DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxCarlos Cámara
 
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
 
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
 
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
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe StringStan Doherty
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentationDing Zhou
 
DSpace RoadMap 2012
DSpace RoadMap 2012DSpace RoadMap 2012
DSpace RoadMap 2012Tim Donohue
 
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
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJulien Dubois
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Frank Karlitschek
 
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
 
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
 
Introducing to git
Introducing to gitIntroducing to git
Introducing to gitSajjad Rad
 
The Evolution of DITAs
The Evolution of DITAsThe Evolution of DITAs
The Evolution of DITAsIXIASOFT
 

Similaire à DConf 2016: Sociomantic & D by Leandro Lucarella (20)

DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)
DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)
DConf 2016: Sociomantic & D by Leandro Lucarella (extended version)
 
[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
 
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
 
Ddemap
DdemapDdemap
Ddemap
 
DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital Toolbox
 
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
 
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
 
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
 
The Future of DITA
The Future of DITAThe Future of DITA
The Future of DITA
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe String
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentation
 
DSpace RoadMap 2012
DSpace RoadMap 2012DSpace RoadMap 2012
DSpace RoadMap 2012
 
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
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynote
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
 
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
 
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...
 
Introducing to git
Introducing to gitIntroducing to git
Introducing to git
 
The Evolution of DITAs
The Evolution of DITAsThe Evolution of DITAs
The Evolution of DITAs
 

Plus de Andrei Alexandrescu

Andrei Alexandrescu keynote at CSDN 2007 in Beijing, China
Andrei Alexandrescu keynote at CSDN 2007 in Beijing, ChinaAndrei Alexandrescu keynote at CSDN 2007 in Beijing, China
Andrei Alexandrescu keynote at CSDN 2007 in Beijing, ChinaAndrei Alexandrescu
 
ACCU Keynote by Andrei Alexandrescu
ACCU Keynote by Andrei AlexandrescuACCU Keynote by Andrei Alexandrescu
ACCU Keynote by Andrei AlexandrescuAndrei Alexandrescu
 
DConf 2016: What Parnas72 Means for D by Luis Marques
DConf 2016: What Parnas72 Means for D by Luis MarquesDConf 2016: What Parnas72 Means for D by Luis Marques
DConf 2016: What Parnas72 Means for D by Luis MarquesAndrei Alexandrescu
 
DConf 2016: Bitpacking Like a Madman by Amaury Sechet
DConf 2016: Bitpacking Like a Madman by Amaury SechetDConf 2016: Bitpacking Like a Madman by Amaury Sechet
DConf 2016: Bitpacking Like a Madman by Amaury SechetAndrei Alexandrescu
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright Andrei Alexandrescu
 
DaNode - A home made web server in D
DaNode - A home made web server in DDaNode - A home made web server in D
DaNode - A home made web server in DAndrei Alexandrescu
 

Plus de Andrei Alexandrescu (7)

Andrei Alexandrescu keynote at CSDN 2007 in Beijing, China
Andrei Alexandrescu keynote at CSDN 2007 in Beijing, ChinaAndrei Alexandrescu keynote at CSDN 2007 in Beijing, China
Andrei Alexandrescu keynote at CSDN 2007 in Beijing, China
 
ACCU Keynote by Andrei Alexandrescu
ACCU Keynote by Andrei AlexandrescuACCU Keynote by Andrei Alexandrescu
ACCU Keynote by Andrei Alexandrescu
 
DConf 2016: What Parnas72 Means for D by Luis Marques
DConf 2016: What Parnas72 Means for D by Luis MarquesDConf 2016: What Parnas72 Means for D by Luis Marques
DConf 2016: What Parnas72 Means for D by Luis Marques
 
DConf 2016: Bitpacking Like a Madman by Amaury Sechet
DConf 2016: Bitpacking Like a Madman by Amaury SechetDConf 2016: Bitpacking Like a Madman by Amaury Sechet
DConf 2016: Bitpacking Like a Madman by Amaury Sechet
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright
 
DaNode - A home made web server in D
DaNode - A home made web server in DDaNode - A home made web server in D
DaNode - A home made web server in D
 
DConf 2016 Opening Keynote
DConf 2016 Opening KeynoteDConf 2016 Opening Keynote
DConf 2016 Opening Keynote
 

Dernier

How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
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
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 

Dernier (20)

How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
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
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
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
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 

DConf 2016: Sociomantic & D by Leandro Lucarella

  • 1. Sociomantic & D(u) Leandro "Luca" Lucarella Technical Development Lead
  • 2. Introduction • D's history • Sociomantic's D-related history • My Sociomantic & D-related history • The now • The future! 2/29 Sociomantic & D(u)
  • 3. The Big Bang • Dec 8, 2001: D 0.00 • First public release of D / DMD • Changelog: New/Changed Features * Initial release • Yes, not even 0.01 • Yes, only 2 digits after the dot • We are close to D's 15th birthday! 3/29 Sociomantic & D(u)
  • 4. The Beast Crowls Out Of The Ocean • Jan 2002 D 0.15 • "I've finally got packages implemented" • Apr 2002 D 0.29 • "Released the front and compiler source" • Sep 2002 D 0.40 • "Implemented templates" • May 2003 D 0.63 • "Added linux version" 4/29 Sociomantic & D(u)
  • 5. The Dinosaurs • Sep 2003 D 0.71 • "Added foreach statement" • May 2004 D 0.89 • "Mixins added" • Sometime between 2004 and 2005 • Me Me Me! This is more or less when I discovered D • May 2005 D 0.124 • "Added static if and iftype" (iftype???) 5/29 Sociomantic & D(u)
  • 6. The Meteorite is Approaching... • Mar 2006 D 0.149 "Changed on_scope_XXX to scope(XXX)" • Sociomantic founders (to be) start PhD project • May 2006 D 0.157 "Partial Dwarf symbol debug info for Linux" • First commits to Tango (in stealth-mode) • Jul 2006 D 0.163 "Added static, renamed and selective imports" • A little buggy, but finally fixed 10 years later • Dec 2006 D 0.178 Last 0.xxx release • Andrei's back 6/29 Sociomantic & D(u)
  • 7. 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) 7/29 Sociomantic & D(u)
  • 8. Controversial Times • Mid 2007 - late 2008 a dark time for D • The rise 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) 8/29 Sociomantic & D(u)
  • 9. Time for Choices • Aug 2008 D 1.034 / 2.018 First Tango/D Conference (in Poland) • First question from Sociomantic founder asked in Tango forums • I start working on my thesis (CDGC) D2 + Phobos D1 + Tango • No version-control • Mostly still a one-man show • Hard to contribute • Focused on new features and experimentation • Version-control in Dsource • Community-driven • Easy to contribute • Focused on stability and usability 9/29 Sociomantic & D(u)
  • 10. Sociomantic Era Begins • Feb 2009 D 1.040 / 2.025 • 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 "global storage now defaults to TLS" • First patch submitted to Tango by Sociomantic's founders • Aug 2009 D 1.046 / 2.031 • First Sociomantic employee: D developer (to be) 10/29 Sociomantic & D(u)
  • 11. Opening Roads • Sep 2008 D 2.020 • "First version using Druntime" • Mar 2009 D 1.041 / 2.026 • "Added buildable dmd source" • Oct 2009 D 2.033 • "Phobos is now using the Boost 1.0 license" • Dec 2009 D 1.050 / 2.035 • First releases from SVN / dsource 11/29 Sociomantic & D(u)
  • 12. CDGC's 15 Minutes • Sep 2010 D 1.064 / 2.049 • CDGC is finished • Oct 2010 D 1.065 / 2.050 • Submitted CDGC Tango integration patches • Nov 2010 • Sean Kelly's publishes experimental CDGC branch in Druntime • Jan 2011 D 1.066 / 2.051 • DMD project moves to GitHub • CDGC merged to Tango 12/29 Sociomantic & D(u)
  • 13. Sociomantic and Me • Apr 2011 D 1.067 / 2.052 • Sociomantic starts playing with CDGC. freenode #d.tango: Apr28 13:04| Suprano: luca_, I am using your cdgc right now :) • May 2011 D 1.068 / 2.053 • First formal contact with Sociomantic • Oct 2011 D 1.070 / 2.055 • I start working for Sociomantic • 4th D developer, ~15th employee overall in the company 13/29 Sociomantic & D(u)
  • 14. 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") • First 64bit commit in DMD only 1.5 years ago • Fist (supposedly) working 64bit compiler for Linux only 8 months ago • Probably the first serious users of the 64bit compiler • Jan 2012 Don Clugston joins Sociomantic (5th D developer) 14/29 Sociomantic & D(u)
  • 15. The Horror • Feb 2012 D 1.073 / 2.058 • The term DBOTD becomes popular • Don's lists of 64bit bugs become popular too. Real 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) 8095: horrific optimizer bug, see below partial fix of 5570, 64bit extern(C) ABI 15/29 Sociomantic & D(u)
  • 16. 64bit Migration Finished • Completed in Jun 2012 D 1.074 / 2.059 • More than 6 months of work • No language changes, only adding -m64 when compiling • Most 64bit bugs involve bad code generation and/or corruption • Lots of pain, but we pushed for a reliable 64bit DMD compiler (we contributed our beta-testing suffering to the community) 16/29 Sociomantic & D(u)
  • 17. The End, The Beginning • Dec 2012 D 1.076 Last D1 release. RIP D1... or not? • 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) 17/29 Sociomantic & D(u)
  • 18. 2013 Miscellaneous • May 2013 D 2.063 • First global D Conference: DConf2013 • Two Sociomantic speakers • First real analysis of D2 migration at Sociomantic (after DConf) • Jun 2013 Mihails (dicebot) joins Sociomantic (10th D developer) • Dec 2013 D 1.076+git20130909.c8427d6+sociomantic1 • First internal DMD release via deb repository 18/29 Sociomantic & D(u)
  • 19. D1's Not Dead • Feb 2014 D 1.076.s1 / 2.065 • First formal internal DMD release • 17 internal releases since then (every ~1.5 months in average) • Lately more like one release every 3 months • May 2014 • DConf2014 • Two Sociomantic speakers again • We manage to talk about D1 in a D2 conference again 19/29 Sociomantic & D(u)
  • 20. But the Assassination is Planned... • Mar 2014 • Serious plan to migrate to D2 started • We can't afford to stop development or to fork our codebase • Code must work with both D1 and D2 as a transitional step • Jun 2014 D 1.076.s3 "add -v2 switch" • Official plan (dicebot is tricked into being the main executor) • Oct 2014 D 1.077.s7 / 2.066 "-v2 warns on const storage class" • Mihails' experimental port of CDGC to D2 • d1to2fix tool created • Internal Tango migration starts 20/29 Sociomantic & D(u)
  • 21. 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 • Iain Buclaw joins Sociomantic (not a D developer... TRAITOR!) • DIP75: Release Process is created • Apr 2015 D 1.077.s13 / D 2.066.1 • First official DMD point (stable) release • May 2015 • Tango migration finished • DConf2015: Two speakers again, one talk about D2 migration 21/29 Sociomantic & D(u)
  • 22. And It Keeps Rolling • Jul 2015 2.066.1.s1 • First internal DMD2 bugfix release • Since then we've done 5 internal DMD2 releases • Sep 2015 D 1.077.s16 / 2.068.1 • Ocean migration complete • Nov 2015 D 2.069.0 • DMD has been ported to D • Bad for D1 bugfix backporting (still in C++, of course) 22/29 Sociomantic & D(u)
  • 23. Life On Mars • Jan 2016 D 2.070.0 / 2.066.s3 • Two applications fully ported to D2 • Sociomantic and D Foundation talks start • Mathias Lang (geod) to contribute to DMD2 via Tsunami • Feb 2016 D 2.070.1 / 2.070.1.s1 • Move to D 2.070 (some breaking changes need code updates) • Work started on a Buffer replacement for D1 stomping arrays 23/29 Sociomantic & D(u)
  • 24. TangOcean • Mar 2016 D 2.070.2 • 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 • Runtime D1-only, the user library is both D1 and D2 compatible 24/29 Sociomantic & D(u)
  • 25. It's ALIVE Apr 2016 (last month) D 2.071.0 / 2.070.s2 • 2 more applications fully ported (4 in total) • 2 applications compiled with D2 running instances LIVE! • Some applications have performance regressions • One performs better and use less memory 25/29 Sociomantic & D(u)
  • 26. The Now • We are at DConf2016 • First DConf co-organized by Sociomantic • First DConf held in Europe • 2 Sociomantic speakers again (+ 1 + 6 + 1) • D2 Migration summary • 3 years since we started thinking about D2 migration • 2 years since we have a D2 migration plan • 1++ years since we started the serious migration work • CI to ensure projects that are moved to D2, stays D2 • ~30 D developers (and still growing...) 26/29 Sociomantic & D(u)
  • 27. The Future • Still a long road to go • 4 from 5 core libraries ported (80%) • 3 from 6 utility libraries ported (50%) • 4 from 30++ applications ported (10~15%), the simplest ones • And we are only talking about the transition phase • We need to address the performance regressions • We'll probably need to work on the GC for the real-time processes • More D(2) developers: YOU join Sociomantic (we are hiring! https://careers.sociomantic.com/) 27/29 Sociomantic & D(u)
  • 28. Pull Request • We want to merge back to D's community • Ocean open source release! (Tsunami) • 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 • More people contributing to the community (Tsunami) • More open sourcing (Tsunami) 28/29 Sociomantic & D(u)
  • 29. The End... Of This Talk Thank you! Questions??? NO? REALLY? Next talk... 29/29 Sociomantic & D(u)