SlideShare a Scribd company logo
1 of 38
Download to read offline
The State of Go
Where we are in June 2014
Andrew Gerrand
Yesterday
Initial reception
Looking back on the first months.
Complaints
The complaints started right away…
Familiar complaints
Familiar complaints
The first HN thread about Go was mostly an argument about braces and indentation.
Historic moments
The first public language change (Dec 10, 2009):
The gopher
The gopher
The gopher
A keen observation
Signs of hope
Today
Growth
User groups
Today there are 48 active user groups in 15 countries across 5 continents.
GopherCon
Community-driven. 3 days. 700 attendees. 24 talks. 1 panel. 4 hours of lightning talks!
The gopher
The gopher
The gopher
Go 1.3
Released last Wednesday, 18 June 2014.
Highlights:
Native Client support (amd64, 386)
DragonFly BSD, Plan 9, and Solaris support
Improved performance (GC, contiguous stacks, race detector, regexp)
Faster incremental builds (linker overhaul)
Precise GC of stacks
Static analysis in godoc
Tomorrow
Upcoming conferences
Go 1.4
Due December 1st, 2014.
What might be in it? (Speculative list follows.)
New language features
Nope.
Canonical import paths
A means for a repository to specify its canonical import path.
Goal: stop people from checking out repos from the wrong path.
Applications:
Stable vanity import paths.
"camlistore.org"->"camlistore.googlesource.com/camlistore"
Make GitHub's fork model less painful.
(Proposal forthcoming.)
Internal packages
Current proposal:
"An import of a path containing the element “internal” is disallowed if the importing
code is outside the tree rooted at the parent of the “internal” directory."
Code in /a/b/c/internal/d/e/fcan be imported only by code in the directory
tree rooted at /a/b/c.
$GOROOT/src/pkg/internal/xxxcan be imported only by other code in the
standard library ($GOROOT/src/).
And, later:
$GOPATH/src/mypkg/internal/foocan be imported only by code in
$GOPATH/src/mypkg.
golang.org/s/go14internal(http://golang.org/s/go14internal)
src/pkg → src
Move the standard library from $GOROOT/src/pkgto $GOROOT/src.
Basically makes $GOROOTwork just like $GOPATH.
(Not a big deal for most, but a nice clean up for the core.)
golang.org/s/go14nopkg(http://golang.org/s/go14nopkg)
File system access throttling
Throttling of access to the file system at the ospackage level.
Goal:
Launch a million goroutines that do file system stuff.
Don't launch a million operating system threads to block on the syscalls.
Make it work just as nicely as it does with the network.
(Proposal forthcoming.)
"go generate"
A convenience for generating Go source code. Example uses:
yacc: generating .go files from yacc grammar (.y) files
protobufs: generating .pb.go files from protocol buffer definition (.proto) files
HTML: embedding .html files into Go source code
Other ideas abound…
Proposed mechanism:
Add generator directive in Go source files:
//go:generateyacc-ogopher.gogopher.y
Use the Go tool to execute the directives:
%gogenerate[packagepath]
(Proposal forthcoming.)
More tool chain work
cmd/gosupport for gccgo
cmd/gosupport for embedded data files
Race detector improvements
The transition from C to Go continues:
Linker rewritten in Go (cmd/link)
Assembler rewritten in Go (cmd/asm)
Possibly: cmd/gctranslated to Go
Better GC and malloc
The existing allocator is based on TCMalloc (designed for C/C++). It can be re-
designed to better suit Go.
Lighter representation and colocation of GC metadata.
Various strategies for reducing GC pause time (concurrent sweep, etc).
Rough estimate: 10-20% overall speedup, 20-50% GC pause reduction, 5-10% RSS
reduction.
Details:
golang.org/s/go14mallocgc(http://golang.org/s/go14mallocgc)
Other runtime changes
Concurrency improvements:
Lock-free fast path for non-blocking receive from empty channel.
Rewrite select to hold only one channel lock at a time.
C to Go:
G-stack runtime converted to Go.
Package changes
Easier structuring features in text/template
Bring reflect.Valueback to 3 words
Fix embedded field visibility (reflect)
Safe version of encoding/gob
Unicode 7 support
Ports
Native Client arm
PowerPC 64
ARM64
Go support for Android
Go support for the NDK. (Like C/C++ today, but better!)
Goal: enough support for writing games.
Based on the work of Elias Naur and others in the community.
golang.org/s/go14android(http://golang.org/s/go14android)
More
golang.org/s/go14todo(http://golang.org/s/go14todo)
Questions?
Thank you
Andrew Gerrand

More Related Content

What's hot

DRUG - RDSTK Talk
DRUG - RDSTK TalkDRUG - RDSTK Talk
DRUG - RDSTK Talkrtelmore
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
Linux Administration (Revised Syllabus) [QP / October - 2016]
Linux Administration (Revised Syllabus) [QP / October - 2016]Linux Administration (Revised Syllabus) [QP / October - 2016]
Linux Administration (Revised Syllabus) [QP / October - 2016]Mumbai B.Sc.IT Study
 
source{d} Engine: Exploring git repos with SQL
source{d} Engine: Exploring git repos with SQLsource{d} Engine: Exploring git repos with SQL
source{d} Engine: Exploring git repos with SQLsource{d}
 
openCypher: Naming and Addressing Multiple Graphs
openCypher: Naming and Addressing Multiple GraphsopenCypher: Naming and Addressing Multiple Graphs
openCypher: Naming and Addressing Multiple GraphsopenCypher
 
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014]
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014][Question Paper] Linux Administration (75:25 Pattern) [November / 2014]
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014]Mumbai B.Sc.IT Study
 
Linux Administration (Revised Syllabus) [QP / May - 2016]
Linux Administration (Revised Syllabus) [QP / May - 2016]Linux Administration (Revised Syllabus) [QP / May - 2016]
Linux Administration (Revised Syllabus) [QP / May - 2016]Mumbai B.Sc.IT Study
 
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014]
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014][Question Paper] Linux Administration (60:40 Pattern) [April / 2014]
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014]Mumbai B.Sc.IT Study
 
LinuxFinExam_RatanMohapatra
LinuxFinExam_RatanMohapatraLinuxFinExam_RatanMohapatra
LinuxFinExam_RatanMohapatraRatan Mohapatra
 
Geo Package and OWS Context at FOSS4G PDX
Geo Package and OWS Context at FOSS4G PDXGeo Package and OWS Context at FOSS4G PDX
Geo Package and OWS Context at FOSS4G PDXLuis Bermudez
 
なぜ検索しなかったのか
なぜ検索しなかったのかなぜ検索しなかったのか
なぜ検索しなかったのかN Masahiro
 
2019 IRIS-HEP AS workshop: Particles and decays
2019 IRIS-HEP AS workshop: Particles and decays2019 IRIS-HEP AS workshop: Particles and decays
2019 IRIS-HEP AS workshop: Particles and decaysHenry Schreiner
 
Intoroduction of py7zr
Intoroduction of py7zrIntoroduction of py7zr
Intoroduction of py7zrHiroshi Miura
 

What's hot (20)

Cpp lab 13_pres
Cpp lab 13_presCpp lab 13_pres
Cpp lab 13_pres
 
DRUG - RDSTK Talk
DRUG - RDSTK TalkDRUG - RDSTK Talk
DRUG - RDSTK Talk
 
Cscope and ctags
Cscope and ctagsCscope and ctags
Cscope and ctags
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
Linux Administration (Revised Syllabus) [QP / October - 2016]
Linux Administration (Revised Syllabus) [QP / October - 2016]Linux Administration (Revised Syllabus) [QP / October - 2016]
Linux Administration (Revised Syllabus) [QP / October - 2016]
 
source{d} Engine: Exploring git repos with SQL
source{d} Engine: Exploring git repos with SQLsource{d} Engine: Exploring git repos with SQL
source{d} Engine: Exploring git repos with SQL
 
openCypher: Naming and Addressing Multiple Graphs
openCypher: Naming and Addressing Multiple GraphsopenCypher: Naming and Addressing Multiple Graphs
openCypher: Naming and Addressing Multiple Graphs
 
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014]
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014][Question Paper] Linux Administration (75:25 Pattern) [November / 2014]
[Question Paper] Linux Administration (75:25 Pattern) [November / 2014]
 
Linux Administration (Revised Syllabus) [QP / May - 2016]
Linux Administration (Revised Syllabus) [QP / May - 2016]Linux Administration (Revised Syllabus) [QP / May - 2016]
Linux Administration (Revised Syllabus) [QP / May - 2016]
 
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014]
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014][Question Paper] Linux Administration (60:40 Pattern) [April / 2014]
[Question Paper] Linux Administration (60:40 Pattern) [April / 2014]
 
File management
File managementFile management
File management
 
LinuxFinExam_RatanMohapatra
LinuxFinExam_RatanMohapatraLinuxFinExam_RatanMohapatra
LinuxFinExam_RatanMohapatra
 
R packages
R packagesR packages
R packages
 
Using HDF5 and Python: The H5py module
Using HDF5 and Python: The H5py moduleUsing HDF5 and Python: The H5py module
Using HDF5 and Python: The H5py module
 
Geo Package and OWS Context at FOSS4G PDX
Geo Package and OWS Context at FOSS4G PDXGeo Package and OWS Context at FOSS4G PDX
Geo Package and OWS Context at FOSS4G PDX
 
なぜ検索しなかったのか
なぜ検索しなかったのかなぜ検索しなかったのか
なぜ検索しなかったのか
 
2019 IRIS-HEP AS workshop: Particles and decays
2019 IRIS-HEP AS workshop: Particles and decays2019 IRIS-HEP AS workshop: Particles and decays
2019 IRIS-HEP AS workshop: Particles and decays
 
Pybind11 - SciPy 2021
Pybind11 - SciPy 2021Pybind11 - SciPy 2021
Pybind11 - SciPy 2021
 
Intoroduction of py7zr
Intoroduction of py7zrIntoroduction of py7zr
Intoroduction of py7zr
 
HDF5 Tools
HDF5 ToolsHDF5 Tools
HDF5 Tools
 

Similar to The State of Go - Andrew Gerrand

The Power of Git
The Power of GitThe Power of Git
The Power of GitHaggen So
 
Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016Codemotion
 
Visualize Your Code Repos and More with Gource: FOSDEM 2017
Visualize Your Code Repos and More with Gource: FOSDEM 2017Visualize Your Code Repos and More with Gource: FOSDEM 2017
Visualize Your Code Repos and More with Gource: FOSDEM 2017Dawn Foster
 
GopherCon Denver LT 2018
GopherCon Denver LT 2018GopherCon Denver LT 2018
GopherCon Denver LT 2018Prateek Gogia
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Codemotion
 
Visualize Your Code Repos and More with Gource
Visualize Your Code Repos and More with GourceVisualize Your Code Repos and More with Gource
Visualize Your Code Repos and More with GourceDawn Foster
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectMarkus Neteler
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Asher Martin
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Travis Reeder
 
Inroduction to golang
Inroduction to golangInroduction to golang
Inroduction to golangYoni Davidson
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
 
Geek Talk Backend Unit Testing in Go Language
Geek Talk Backend Unit Testing in Go LanguageGeek Talk Backend Unit Testing in Go Language
Geek Talk Backend Unit Testing in Go LanguageHaluan Irsad
 
Open Video Conference: HTML and the video tag
Open Video Conference: HTML and the video tagOpen Video Conference: HTML and the video tag
Open Video Conference: HTML and the video tagSilvia Pfeiffer
 
Assignment 1 MapReduce With Hadoop
Assignment 1  MapReduce With HadoopAssignment 1  MapReduce With Hadoop
Assignment 1 MapReduce With HadoopAllison Thompson
 

Similar to The State of Go - Andrew Gerrand (20)

The Power of Git
The Power of GitThe Power of Git
The Power of Git
 
Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016Getting started with go - Florin Patan - Codemotion Milan 2016
Getting started with go - Florin Patan - Codemotion Milan 2016
 
Visualize Your Code Repos and More with Gource: FOSDEM 2017
Visualize Your Code Repos and More with Gource: FOSDEM 2017Visualize Your Code Repos and More with Gource: FOSDEM 2017
Visualize Your Code Repos and More with Gource: FOSDEM 2017
 
GopherCon Denver LT 2018
GopherCon Denver LT 2018GopherCon Denver LT 2018
GopherCon Denver LT 2018
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
 
Visualize Your Code Repos and More with Gource
Visualize Your Code Repos and More with GourceVisualize Your Code Repos and More with Gource
Visualize Your Code Repos and More with Gource
 
Fedora24
Fedora24Fedora24
Fedora24
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Community based software development: The GRASS GIS project
Community based software development: The GRASS GIS projectCommunity based software development: The GRASS GIS project
Community based software development: The GRASS GIS project
 
Mender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and GolangMender.io | Develop embedded applications faster | Comparing C and Golang
Mender.io | Develop embedded applications faster | Comparing C and Golang
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Inroduction to golang
Inroduction to golangInroduction to golang
Inroduction to golang
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
Geek Talk Backend Unit Testing in Go Language
Geek Talk Backend Unit Testing in Go LanguageGeek Talk Backend Unit Testing in Go Language
Geek Talk Backend Unit Testing in Go Language
 
Open Video Conference: HTML and the video tag
Open Video Conference: HTML and the video tagOpen Video Conference: HTML and the video tag
Open Video Conference: HTML and the video tag
 
Assignment 1 MapReduce With Hadoop
Assignment 1  MapReduce With HadoopAssignment 1  MapReduce With Hadoop
Assignment 1 MapReduce With Hadoop
 

More from Hakka Labs

Always Valid Inference (Ramesh Johari, Stanford)
Always Valid Inference (Ramesh Johari, Stanford)Always Valid Inference (Ramesh Johari, Stanford)
Always Valid Inference (Ramesh Johari, Stanford)Hakka Labs
 
DataEngConf SF16 - High cardinality time series search
DataEngConf SF16 - High cardinality time series searchDataEngConf SF16 - High cardinality time series search
DataEngConf SF16 - High cardinality time series searchHakka Labs
 
DataEngConf SF16 - Data Asserts: Defensive Data Science
DataEngConf SF16 - Data Asserts: Defensive Data ScienceDataEngConf SF16 - Data Asserts: Defensive Data Science
DataEngConf SF16 - Data Asserts: Defensive Data ScienceHakka Labs
 
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataDatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataHakka Labs
 
DataEngConf SF16 - Recommendations at Instacart
DataEngConf SF16 - Recommendations at InstacartDataEngConf SF16 - Recommendations at Instacart
DataEngConf SF16 - Recommendations at InstacartHakka Labs
 
DataEngConf SF16 - Running simulations at scale
DataEngConf SF16 - Running simulations at scaleDataEngConf SF16 - Running simulations at scale
DataEngConf SF16 - Running simulations at scaleHakka Labs
 
DataEngConf SF16 - Deriving Meaning from Wearable Sensor Data
DataEngConf SF16 - Deriving Meaning from Wearable Sensor DataDataEngConf SF16 - Deriving Meaning from Wearable Sensor Data
DataEngConf SF16 - Deriving Meaning from Wearable Sensor DataHakka Labs
 
DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale Hakka Labs
 
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQDataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQHakka Labs
 
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...Hakka Labs
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...Hakka Labs
 
DataEngConf SF16 - Scalable and Reliable Logging at Pinterest
DataEngConf SF16 - Scalable and Reliable Logging at PinterestDataEngConf SF16 - Scalable and Reliable Logging at Pinterest
DataEngConf SF16 - Scalable and Reliable Logging at PinterestHakka Labs
 
DataEngConf SF16 - Bridging the gap between data science and data engineering
DataEngConf SF16 - Bridging the gap between data science and data engineeringDataEngConf SF16 - Bridging the gap between data science and data engineering
DataEngConf SF16 - Bridging the gap between data science and data engineeringHakka Labs
 
DataEngConf SF16 - Multi-temporal Data Structures
DataEngConf SF16 - Multi-temporal Data StructuresDataEngConf SF16 - Multi-temporal Data Structures
DataEngConf SF16 - Multi-temporal Data StructuresHakka Labs
 
DataEngConf SF16 - Entity Resolution in Data Pipelines Using Spark
DataEngConf SF16 - Entity Resolution in Data Pipelines Using SparkDataEngConf SF16 - Entity Resolution in Data Pipelines Using Spark
DataEngConf SF16 - Entity Resolution in Data Pipelines Using SparkHakka Labs
 
DataEngConf SF16 - Beginning with Ourselves
DataEngConf SF16 - Beginning with OurselvesDataEngConf SF16 - Beginning with Ourselves
DataEngConf SF16 - Beginning with OurselvesHakka Labs
 
DataEngConf SF16 - Routing Billions of Analytics Events with High Deliverability
DataEngConf SF16 - Routing Billions of Analytics Events with High DeliverabilityDataEngConf SF16 - Routing Billions of Analytics Events with High Deliverability
DataEngConf SF16 - Routing Billions of Analytics Events with High DeliverabilityHakka Labs
 
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...Hakka Labs
 
DataEngConf SF16 - Methods for Content Relevance at LinkedIn
DataEngConf SF16 - Methods for Content Relevance at LinkedInDataEngConf SF16 - Methods for Content Relevance at LinkedIn
DataEngConf SF16 - Methods for Content Relevance at LinkedInHakka Labs
 
DataEngConf SF16 - Spark SQL Workshop
DataEngConf SF16 - Spark SQL WorkshopDataEngConf SF16 - Spark SQL Workshop
DataEngConf SF16 - Spark SQL WorkshopHakka Labs
 

More from Hakka Labs (20)

Always Valid Inference (Ramesh Johari, Stanford)
Always Valid Inference (Ramesh Johari, Stanford)Always Valid Inference (Ramesh Johari, Stanford)
Always Valid Inference (Ramesh Johari, Stanford)
 
DataEngConf SF16 - High cardinality time series search
DataEngConf SF16 - High cardinality time series searchDataEngConf SF16 - High cardinality time series search
DataEngConf SF16 - High cardinality time series search
 
DataEngConf SF16 - Data Asserts: Defensive Data Science
DataEngConf SF16 - Data Asserts: Defensive Data ScienceDataEngConf SF16 - Data Asserts: Defensive Data Science
DataEngConf SF16 - Data Asserts: Defensive Data Science
 
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataDatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
 
DataEngConf SF16 - Recommendations at Instacart
DataEngConf SF16 - Recommendations at InstacartDataEngConf SF16 - Recommendations at Instacart
DataEngConf SF16 - Recommendations at Instacart
 
DataEngConf SF16 - Running simulations at scale
DataEngConf SF16 - Running simulations at scaleDataEngConf SF16 - Running simulations at scale
DataEngConf SF16 - Running simulations at scale
 
DataEngConf SF16 - Deriving Meaning from Wearable Sensor Data
DataEngConf SF16 - Deriving Meaning from Wearable Sensor DataDataEngConf SF16 - Deriving Meaning from Wearable Sensor Data
DataEngConf SF16 - Deriving Meaning from Wearable Sensor Data
 
DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale
 
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQDataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
 
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...
DataEngConf SF16 - Unifying Real Time and Historical Analytics with the Lambd...
 
DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...DataEngConf SF16 - Three lessons learned from building a production machine l...
DataEngConf SF16 - Three lessons learned from building a production machine l...
 
DataEngConf SF16 - Scalable and Reliable Logging at Pinterest
DataEngConf SF16 - Scalable and Reliable Logging at PinterestDataEngConf SF16 - Scalable and Reliable Logging at Pinterest
DataEngConf SF16 - Scalable and Reliable Logging at Pinterest
 
DataEngConf SF16 - Bridging the gap between data science and data engineering
DataEngConf SF16 - Bridging the gap between data science and data engineeringDataEngConf SF16 - Bridging the gap between data science and data engineering
DataEngConf SF16 - Bridging the gap between data science and data engineering
 
DataEngConf SF16 - Multi-temporal Data Structures
DataEngConf SF16 - Multi-temporal Data StructuresDataEngConf SF16 - Multi-temporal Data Structures
DataEngConf SF16 - Multi-temporal Data Structures
 
DataEngConf SF16 - Entity Resolution in Data Pipelines Using Spark
DataEngConf SF16 - Entity Resolution in Data Pipelines Using SparkDataEngConf SF16 - Entity Resolution in Data Pipelines Using Spark
DataEngConf SF16 - Entity Resolution in Data Pipelines Using Spark
 
DataEngConf SF16 - Beginning with Ourselves
DataEngConf SF16 - Beginning with OurselvesDataEngConf SF16 - Beginning with Ourselves
DataEngConf SF16 - Beginning with Ourselves
 
DataEngConf SF16 - Routing Billions of Analytics Events with High Deliverability
DataEngConf SF16 - Routing Billions of Analytics Events with High DeliverabilityDataEngConf SF16 - Routing Billions of Analytics Events with High Deliverability
DataEngConf SF16 - Routing Billions of Analytics Events with High Deliverability
 
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...
DataEngConf SF16 - Tales from the other side - What a hiring manager wish you...
 
DataEngConf SF16 - Methods for Content Relevance at LinkedIn
DataEngConf SF16 - Methods for Content Relevance at LinkedInDataEngConf SF16 - Methods for Content Relevance at LinkedIn
DataEngConf SF16 - Methods for Content Relevance at LinkedIn
 
DataEngConf SF16 - Spark SQL Workshop
DataEngConf SF16 - Spark SQL WorkshopDataEngConf SF16 - Spark SQL Workshop
DataEngConf SF16 - Spark SQL Workshop
 

Recently uploaded

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
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
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
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
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
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
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
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
 
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
 
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.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
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...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
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
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
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
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
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
 
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
 
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
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

The State of Go - Andrew Gerrand

  • 1. The State of Go Where we are in June 2014 Andrew Gerrand
  • 3. Initial reception Looking back on the first months.
  • 6. Familiar complaints The first HN thread about Go was mostly an argument about braces and indentation.
  • 7. Historic moments The first public language change (Dec 10, 2009):
  • 13. Today
  • 15. User groups Today there are 48 active user groups in 15 countries across 5 continents.
  • 16. GopherCon Community-driven. 3 days. 700 attendees. 24 talks. 1 panel. 4 hours of lightning talks!
  • 20. Go 1.3 Released last Wednesday, 18 June 2014. Highlights: Native Client support (amd64, 386) DragonFly BSD, Plan 9, and Solaris support Improved performance (GC, contiguous stacks, race detector, regexp) Faster incremental builds (linker overhaul) Precise GC of stacks Static analysis in godoc
  • 23. Go 1.4 Due December 1st, 2014. What might be in it? (Speculative list follows.)
  • 25. Canonical import paths A means for a repository to specify its canonical import path. Goal: stop people from checking out repos from the wrong path. Applications: Stable vanity import paths. "camlistore.org"->"camlistore.googlesource.com/camlistore" Make GitHub's fork model less painful. (Proposal forthcoming.)
  • 26. Internal packages Current proposal: "An import of a path containing the element “internal” is disallowed if the importing code is outside the tree rooted at the parent of the “internal” directory." Code in /a/b/c/internal/d/e/fcan be imported only by code in the directory tree rooted at /a/b/c. $GOROOT/src/pkg/internal/xxxcan be imported only by other code in the standard library ($GOROOT/src/). And, later: $GOPATH/src/mypkg/internal/foocan be imported only by code in $GOPATH/src/mypkg. golang.org/s/go14internal(http://golang.org/s/go14internal)
  • 27. src/pkg → src Move the standard library from $GOROOT/src/pkgto $GOROOT/src. Basically makes $GOROOTwork just like $GOPATH. (Not a big deal for most, but a nice clean up for the core.) golang.org/s/go14nopkg(http://golang.org/s/go14nopkg)
  • 28. File system access throttling Throttling of access to the file system at the ospackage level. Goal: Launch a million goroutines that do file system stuff. Don't launch a million operating system threads to block on the syscalls. Make it work just as nicely as it does with the network. (Proposal forthcoming.)
  • 29. "go generate" A convenience for generating Go source code. Example uses: yacc: generating .go files from yacc grammar (.y) files protobufs: generating .pb.go files from protocol buffer definition (.proto) files HTML: embedding .html files into Go source code Other ideas abound… Proposed mechanism: Add generator directive in Go source files: //go:generateyacc-ogopher.gogopher.y Use the Go tool to execute the directives: %gogenerate[packagepath] (Proposal forthcoming.)
  • 30. More tool chain work cmd/gosupport for gccgo cmd/gosupport for embedded data files Race detector improvements The transition from C to Go continues: Linker rewritten in Go (cmd/link) Assembler rewritten in Go (cmd/asm) Possibly: cmd/gctranslated to Go
  • 31. Better GC and malloc The existing allocator is based on TCMalloc (designed for C/C++). It can be re- designed to better suit Go. Lighter representation and colocation of GC metadata. Various strategies for reducing GC pause time (concurrent sweep, etc). Rough estimate: 10-20% overall speedup, 20-50% GC pause reduction, 5-10% RSS reduction. Details: golang.org/s/go14mallocgc(http://golang.org/s/go14mallocgc)
  • 32. Other runtime changes Concurrency improvements: Lock-free fast path for non-blocking receive from empty channel. Rewrite select to hold only one channel lock at a time. C to Go: G-stack runtime converted to Go.
  • 33. Package changes Easier structuring features in text/template Bring reflect.Valueback to 3 words Fix embedded field visibility (reflect) Safe version of encoding/gob Unicode 7 support
  • 35. Go support for Android Go support for the NDK. (Like C/C++ today, but better!) Goal: enough support for writing games. Based on the work of Elias Naur and others in the community. golang.org/s/go14android(http://golang.org/s/go14android)