Skip to content

ResearchPapers

This page lists academic and industry research papers about Go or using Go as the implementation language.

2021

  • Gobra: Modular Specification and Verification of Go Programs (F. A. Wolf, L. Arquint, M. Clochard, W. Oortwijn, J. C. Pereira, P. Müller)
  • CAV'21
  • web-page

2020

  • Uncovering the Hidden Dangers: Finding Unsafe Go Code in the Wild (J. Lauinger, L. Baumgärtner, A. Wickert, M. Mezini)
  • arxiv
  • go-geiger
  • go-safer
  • Study results
  • Go unsafe.Pointer vulnerability POCs
  • Conference talk
  • Lightweight Preemptible Functions (S. Boucher, A. Kalia, D. Andersen, M. Kaminsky)
  • Usenix'20
  • From Folklore to Fact: Comparing Implementations of Stacks and Continuations (K. Farvadin, J. Reppy)
  • PLDI'20
  • Featherweight Go (R. Griesemer, R. Hu, W. Kokke, J. Lange, I. Taylor, B. Toninho, P. Wadler, N. Yoshida)
  • arxiv
  • GoPi: Compiling linear and static channels in Go (M. Giunti)
  • pdf
  • github
  • Fencing off Go: Liveness and Safety for Channel-Based Programming
  • pdf
  • Breaking Type-Safety in Go: An Empirical Study on the Usage of the unsafe Package (D. Costa, S. Mujahid, R. Abdalkareem, E. Shihab)
  • arxiv
  • Static Race Detection and Mutex Safety and Liveness for Go Programs (J. Gabet, N. Yoshida)
  • arxiv
  • github
  • EdgeKV: Decentralized, scalable, and consistent storage for the edge (K. Sonbol, Ö. Özkasap, I. Al-Oqily, M. Aloqaily)
  • arxiv
  • Bypassing memory safety mechanisms through speculative control flow hijacks (A. Mambretti, A. Sandulescu, A. Sorniotti, W. Robertson, E. Kirda, A. Kurmus)
  • arxiv
  • CL
  • Bounded verification of message-passing concurrency in Go using Promela and Spin (N. Dilley, J. Lange)
  • arxiv
  • github

2019

  • Software Microbenchmarking in the Cloud. How Bad is it Really?. Laaber, Scheuner, and Leitner. In: Empirical Software Engineering.
  • preprint
  • DOI
  • replication package

  • Understanding Real-World Concurrency Bugs in Go (Tu, Liu, Song, Zhang)

  • ASPLOS'19 preprint
  • web

  • An empirical study of messaging passing concurrency in Go projects (N. Dilley, J. Lange)

  • SANER'19 pre-print
  • web-page

  • A comparison of three programming languages for a full-fledged next-generation sequencing tool (Costanza, Herzeel, Verachtert)

  • biorvix

  • Exploring polyglot software frameworks in ALICE with FairMQ and fer

  • arxiv
  • sbinet-alice/fer

  • Flash: Efficient Dynamic Routing for Offchain Networks

  • arxiv

  • RepChain: A Reputation based Secure, Fast and High Incentive Blockchain System via Sharding

  • arxiv

  • Drynx: Decentralized, Secure, Verifiable System for Statistical Queries and Machine Learning on Distributed Datasets

  • arxiv

  • STYLE-ANALYZER: fixing code style inconsistencies with interpretable unsupervised algorithms

  • arxiv

  • Linear-Time Inference for Pairwise Comparisons with Gaussian-Process Dynamics

  • arxiv

2018

  • An Evaluation of Open-Source Software Microbenchmark Suites for Continuous Performance Assessment. Laaber and Leitner. In: MSR ’18: 15th International Conference on Mining Software Repositories.
  • preprint
  • DOI
  • replication package

  • An Analysis of Quorum-based Abstractions: A Case Study using Gorums to Implement Raft. Sebastian Pedersen, Hein Meling, and Leander Jehl. In: Proceedings of the 2018 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed systems, ApPLIED@PODC 2018, Egham, United Kingdom, July 27, 2018. ACM, 2018.

  • doi:10.1145/3231104.3231957
  • Raft implementation in Gorums

  • Implementation and evaluation of secure and scalable anomaly-based network intrusion detection (P. Mieden)

  • pdf
  • code
  • presentation

  • ProIO: An Event-Based I/O Stream Format for Protobuf Messages (D. Blyth, J. Alcaraz, S. Binet, S.V. Chekanov)

  • arXiv:1812.03967
  • proio-org/go-proio

  • The latest gossip on BFT consensus (Buchman, Kwon, Milosevic)

  • pdf

  • Distributed Programming using Role-Parametric Session Types in Go (Castro, Hu, Jongmans, NG, Yoshida)

  • pdf

  • Observing the Evolution of QUIC Implementations, (Piraux, De Coninck, Bonaventure)

  • pdf

  • Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, "The benefits and costs of writing a POSIX kernel in a high-level language"

  • presentation
  • code

  • Voit, Sebastian Peter Johann. "Writing Network Drivers in Go."

  • pdf

  • "MoonShine: Optimizing OS Fuzzer Seed Selection with Trace Distillation" (Shankara Pailoor, Andrew Aday, Suman Jana) USENIX Security 2018

  • pdf

  • "Process-Local Static Analysis of Synchronous Processes" (Jan Midtgaard, Flemming Nielson, Hanne Riis Nielson) SAS 2018

  • full version PDF
  • prototype

  • "Inferring and Asserting Distributed System Invariants" (Stewart Grant, Hendrik Cech, Ivan Beschastnikh) ICSE 2018 Technical Papers

  • pdf
  • bitbucket.org/bestchai/dinv/ "DInv is a distributed system data invariant detector" ; "DInv is written in go lang"

  • "Revisiting the Vector Space Model: Sparse Weighted Nearest-Neighbor Method for Extreme Multi-Label Classification." (Tatsuhiro Aoshima, Kei Kobayashi, Mihoko Minami) arXiv:1802.03938 stat.ML,

  • PDF:arXiv:1802.03938-stat.ML
  • github.com/hiro4bbh/sticker "…We have published our implementation sticker (Aoshima, 2018) written in Golang (Golang, 2009)…"
  • keywords: sticker, machine-learning, classification

  • A Static Verification Framework for Message Passing in Go using Behavioural Types (J. Lange, N. Ng, B. Toninho, N. Yoshida)

  • accepted draft at ICSE 2018
  • Tool page, sources: godel-checker and Go frontend

  • Finding The Greedy, Prodigal, and Suicidal Contracts at Scale (Ivica Nikolic, Aashish Kolluri, Ilya Sergey, Prateek Saxena, Aquinas Hobor)

  • pdf "To implement the validating framework, we added a new functionality to the official go-ethereum package [20] which allows us to fork the Ethereum main chain at a block height of our choice."

  • State of Mutation Testing at Google (Goran Petrovic and Marko Ivankovic)

  • https://research.google.com/pubs/pub46584.html

  • Index Data Structure, Functionality and Microservices in Thematic Virtual Museums (Sajarwo Anggai) (Ph.D. thesis)

  • http://vestnik.spbu.ru/html18/s10/s10v1/04.pdf

  • "Two-Phase Dynamic Analysis of Message-Passing Go Programs based on Vector Clocks" (M. Sulzmann, K. Stadtmueller)

  • arxiv

  • "Revisiting the Vector Space Model: Sparse Weighted Nearest-Neighbor Method for Extreme Multi-Label Classification" (Tatsuhiro Aoshima, Kei Kobayashi, Mihoko Minami)

  • arxiv

  • "GEEC: Scalable, Efficient, and Consistent Consensus for Blockchains" (Xusheng Chen, Shixiong Zhao, Cheng Wang, Senran Zhang, Heming Cui)

  • arxiv

  • "Dependability in a Multi-tenant Multi-framework Deep Learning as-a-Service Platform" (Scott Boag, Parijat Dube, Kaoutar El Maghraoui, Benjamin Herta, Waldemar Hummer, K. R. Jayaram, Rania Khalaf, Vinod Muthusamy, Michael Kalantar, Archit Verma)

  • arxiv
  • github

  • DRONE: a Distributed Subgraph-Centric Framework for Processing Large Scale Power-law Graphs

  • arxiv

  • Reducing Metadata Leakage from Encrypted Files and Communication with PURBs

  • arxiv

2017

  • Gorums: Towards new abstractions for implementing quorum-based systems. Tormod Erevik Lea, Leander Jehl, and Hein Meling. In Kisung Lee and Ling Liu, editors, 37th IEEE International Conference on Distributed Computing Systems, ICDCS 2017, Atlanta, GA, USA, June 5-8, 2017, pages 2380–2385. IEEE Computer Society, 2017
  • doi:10.1109/ICDCS.2017.166
  • Gorums on GitHub
  • Go-HEP: writing concurrent software with ease and Go (S. Binet)
  • doi:10.1088/1742-6596/1085/5/052012
  • arXiV:1808.06529
  • https://go-hep.org
  • RDFIO: extending Semantic MediaWiki for interoperable biomedical data management (Samuel Lampa, Egon Willighagen, Pekka Kohonen, Ali King, Denny Vrandečić, Roland Grafström, Ola Spjuth) Journal of Biomedical Semantics ( Volume: 8, Issue: 35 )
  • DOI: 10.1186/s13326-017-0136-y
  • The rdf2smw commandline tool, for batch conversion from RDF to Semantic MediaWiki facts in MediaWiki XML dump format, is written in Go
  • github.com/rdfio/rdf2smw
  • godoc
  • Keywords: Semantic MediaWiki, Semantic Web, RDF
  • Construction and first tests of an in-beam PET demonstrator dedicated to the ballistic control of hadrontherapy treatments with 65 MeV protons (E Busato et al.) IEEE Transactions on Radiation and Plasma Medical Sciences ( Volume: PP, Issue: 99 )
  • DOI: 10.1109/TRPMS.2017.2780447
  • Monitoring system + parts of the DAQ in Go
  • Keywords: Detectors, Particle beams, Protons, Ions, Plasmas, Structural beams, Monitoring
  • Let's Go: a Data-Driven Multi-Threading Support (Alberto Scionti,Somnath Mazumdar) CF'17 Proceedings of the Computing Frontiers Conference
  • doi.org/10.1145/3075564.3075596 "… This paper proposes a first attempt to map goroutines on a data-driven based PXM. …"
  • Keywords: Data-driven, Programming language, Multi-threading
  • Estimating Mixture Entropy with Pairwise Distances (Artemy Kolchinsky, Brendan D. Tracey)
  • arXiv
  • godoc
  • Towards Omnia: a Monitoring Factory for Quality-Aware DevOps (Marco Miglierina, Damian A. Tamburri)
  • doi.org/10.1145/3053600.3053629 ICPE '17 Companion
  • github.com/mmiglier/omnia (Go: 52.8% )
  • Keywords: Monitoring, Monitoring Management, Monitoring Factory, Monitoring Interface, Monitoring Infrastructure as Code, Monitoring Configuration as Code
  • Copy-on-Reference File Mechanism Extends Scope of Dynamic Reconfiguration (Jeremy Krach) thesis
  • pdf
  • github.com/krockpot/lazyfs "Lazy file retrieval for process migration."
  • An event model for phylogenetic biogeography using explicitly geographical ranges (J. Salvador Arias)
  • http://onlinelibrary.wiley.com/doi/10.1111/jbi.13024/full
  • Computer implementation (EVS written in Go) : github.com/js-arias/evs "Evs is a tool for phylogenetic biogeography. "
  • Feasibility of reusable continuous thrust spacecraft for cargo resupply missions to Mars (C. B. Rabotin) thesis
  • pdf
  • github.com/ChristopherRabotin/smd Space Mission Design - A SPICE-enhanced continuous thrust interplanetary mission propagator and vizualizer
  • Keywords: space-mission interplanetary-missions celestial-bodies astrodynamics orbit propagation spice
  • Performance testing of open-source HTTP web frameworks in an API (Michael A.P. Domingues) DSIE’17
  • https://paginas.fe.up.pt/~prodei/dsie17/DSIE17_Proceedings.pdf#page=18
  • Keywords: Revel, Gin and Echo, Performance testing, API, Web frameworks, Apache benchmark

  • Method of auto-configuration for corporate proxies (Andrés Abelardo Villarroel Acosta, Carlos Enrique Montenegro Marín, Paulo Alonso Gaona García, Yuri Vanessa Nieto Acevedo) Ingeniería solidaria, 2017

  • https://revistas.ucc.edu.co/index.php/in/article/view/1723
  • andresvia/udpac
  • Keywords: Proxy Auto-configuration (PAC), Web Proxy Auto-Discovery Protocol (WPAD), Dynamic Host Configuration Protocol (DHCP), Standard Time.
  • NucAmino: a nucleotide to amino acid alignment optimized for virus gene sequences ( Philip L. Tzou, Xiaoqiu Huang, Robert W. Shafer ) BMC Bioinformatics (2017) 18: 138.
  • DOI: 10.1186/s12859-017-1555-6 "… NucAmino is written in the computer language Go …"
  • github.com/hivdb/NucAmino ( Go 94.4% )
  • Keywords: Sequence alignment, Viruses, HIV-1, Drug resistance, Open source
  • Idiomatic and Reproducible Software Builds using Containers for Reliable Computing (Jonas Weber) Master’s Thesis
  • arXiv:1702.02999v1 cs.SE 9 Feb 2017, pdf
  • github.com/thriqon/thesis-supplement

  • Structured I/O streams in Clive: a toolbox approach for wide area network computing ( Francisco J. Ballesteros )

  • DOI: 10.1186/s13174-016-0054-8 OPEN ACCESS " … Clive is a system written in Go …"
  • Clive related research
  • Clive source "…Clive is an operating system designed to work in distributed and cloud computing environments. …"
  • Keywords: Streams, Input/Output, Operating system, Distributed systems, Cloud computing
  • Towards Practical Default-On Multi-Core Record/Replay ( Ali José Mashtizadeh, Tal Garfinkel, David Terei, David Mazières, Mendel Rosenblum) draft , ASPLOS 2017
  • Draft – Accepted at ASPLOS 2017 - PDF "…Castor currently supports applications written in C, C++, and Go on FreeBSD...., … For Go, we evaluate, Caddy … "
  • Comparing MapReduce and Pipeline Implementations for Counting Triangles ( Edelmira Pasarella, Maria-Esther Vidal, Cristina Zoltan)
  • arXiv:1701.03318 cs.DC
  • pdf "… an ad-hoc version of MapReduce are implemented in the language Go …"
  • Fencing off Go: Liveness and Safety for Channel-based Programming (J. Lange, N. Ng, B. Toninho, N. Yoshida), POPL 2017
  • doi: 10.1145/3009837.3009847
  • Tool page, code
  • Design and Implementation of Concurrent C0 (Willsey, Prabhu, Pfenning)
  • https://arxiv.org/abs/1701.04929
  • Automated Identification of Security Issues from Commit Messages and Bug Reports (Yagin Zhou, Asankhaya Sharma), FSE 2017
  • doi: 10.1145/3106237.3117771
  • Reconstructing Program Semantics from Go Binaries (Engelke)
  • http://home.in.tum.de/~engelke/pubs/1709-ma.pdf
  • An Attempt at Reducing Costs of Disk I/O in Go (Wilson, Mutschlechner)
  • http://pages.cs.wisc.edu/~riccardo/assets/diskio.pdf
  • Go-RealTime: A Lightweight Framework for Multiprocessor Real-Time System in User Space (Fang, Luo, Anwar, Zhuang, Gupta)
  • http://sigbed.seas.upenn.edu/archives/2017-11/paper7.pdf
  • "Secure and Trustable Electronic Medical Records Sharing using Blockchain" (Alevtina Dubovitskaya, Zhigang Xu, Samuel Ryu, Michael Schumacher, Fusheng Wang)
  • arxiv
  • "Towards a More Reliable and Available Docker-based Container Cloud" (Mudit Verma, Mohan Dhawan)
  • arxiv

2016

  • Atom: Horizontally Scaling Strong Anonymity (Albert Kwon, Henry Corrigan-Gibbs, Srinivas Devadas, Bryan Ford)
  • arXiv:1612.07841 cs.CR "…We implemented an Atom prototype in Go in approximately 3,500 lines of code, …"
  • The Case for Reconfiguration without Consensus: Comparing Algorithms for Atomic Storage (Leander Jehl, Hein Meling)
  • pdf
  • github.com/relab/smartmerge implemented in golang
  • Flower : Workflow management and heat-aware scheduling for modern cloud infrastructures (Robert Carosi, Boris Mattijssen) bachelor thesis,
  • abstract, pdf, Keywords: container, workflow, virtualization, scheduling, flower, kubernetes
  • Implementing a web-based bookingsystem using Go ( Vu, Phi-Long ) Independent thesis Basic level
  • abstract, pdf ; Keywords: Booking System, Go, Golang, REST, XSS, XSRF
  • Parallelization of the corpus manager’s time-consuming operations (Bc. Radoslav Rábara ) Master's Thesis, Masaryk University
  • pdf ; Keywords: Manatee, text corpora, Go, text compression, compression of integers, time-consuming operations, parallelization, MapReduce, Glow, distributed computing, data format, cluster, scalability
  • Cyber Security Exercise Modeling & Tracking (Joonas Greis) Bachelor’s thesis
  • pdf "… RESTful API was written with Golang using Go-Json-Rest package …"
  • Scalable Byzantine Consensus via Hardware-assisted Secret Sharing (Jian Liu, Wenting Li, Ghassan O. Karame, N. Asokan)
  • arXiv:1612.04997 cs.CR ; "… Our implementation is based on Golang …" ; pdf
  • Fast and Reliable Byzantine Fault Tolerance (Eric Scott Freeman) Master's thesis in Computer science
  • link, pdf
  • Formal verification of concurrency in go (Anuchit Prasertsang, Denduang Pradubsuwun)
  • DOI: 10.1109/JCSSE.2016.7748882
  • Therapeutic target discovery using Boolean network attractors: updates from kali ( Arnaud Poret ) ( Quantitative Biology > Molecular Networks)
  • arXiv:1611.03144v1 q-bio.MN
  • github.com/arnaudporet/kali [Go 100.0%]
  • Information Flow Analysis for Go ( Eric Bodden, Ka I. Pun, Martin Steffen, Volker Stolz, Anna-Katharina Wickert)
  • 10.1007/978-3-319-47166-2_30
  • A Productivity Checker for Logic Programming (E. Komendantskaya, P. Johann, M. Schmidt )
  • arXiv:1608.04415 cs.PL
  • project page: http://www.macs.hw.ac.uk/~ek19/CoALP/
  • A novel algorithm for detecting multiple covariance and clustering of biological sequences ( Wei Shen & Yan Li) ( Coevolution, Computational models )
  • http://www.nature.com/articles/srep30425 , doi:10.1038/srep30425
  • Algorithm implementation (golang - only binary ) : http://yanlilab.github.io/fastcov/
  • Architecture of the Hyperledger Blockchain Fabric (Christian Cachin)
  • pdf
  • code
  • Reimagining the Programming Experience ( Mehrdad Afshari , dissertation) GoClr
  • pdf
  • MapReduce vs. Pipelining Counting Triangles (Edelmira Pasarella, Maria-Esther Vidal,and Cristina Zoltan)
  • pdf
  • Parametric Polymorphism in the Go Programming Language (Matthew Allen) University of Texas, Turing Scholars honors thesis
  • pdf
  • code ( LLGO based )
  • Static Trace-Based Deadlock Analysis for Synchronous Mini-Go ( Kai Stadtmüller, Martin Sulzmann, and Peter Thiemann )
  • pdf
  • code - first beta implementation : gopherlyzer
  • Continuous Query-Based Syndication: Distributed, Expressive Messaging for the IoT( Gabriel Fierro, Erik Krogen )
  • pdf, motivation
  • code ( Go and Python implementation )
  • Privacy, Discovery, and Authentication for the Internet of Things (Wu, Taly, Shankar, Boneh)
  • arxiv
  • code
  • Static Deadlock Detection for Concurrent Go by Global Session Graph Synthesis (Ng, Yoshida)
  • pdf
  • code
  • A Small-Step Semantics of a Concurrent Calculus with Goroutines and Deferred Functions ( Martin Steffen )
  • springer link
  • Butterfield, Ellis H., "Fog Computing with Go: A Comparative Study" (2016). CMC Senior Theses. Paper 1348.
  • http://scholarship.claremont.edu/cmc_theses/1348
  • An Implementation and Analysis of a Kernel Network Stack in Go with the CSP Style (Harshal Sheth, Aashish Welling)
  • arXiv:1603.05636 cs.OS
  • PAS-MC: Privacy-preserving Analytics Stream for the Mobile Cloud (Joy, Gerla)
  • arXiv:1604.04892 cs.CR
  • Developing an Ethereum Blockchain Application (Triantafyllidis)
  • pdf
  • Identifying and characterizing Sybils in the Tor network (Winter, Ensafi, Loesing, and Feamster)
  • pdf
  • code
  • A Distributed Implementation of the Graph Database System: DGraph
  • pdf
  • Browsix: Bridging the Gap Between Unix and the Browser (Powers, Vilk, Berger)
  • https://arxiv.org/abs/1611.07862
  • Verification of Goroutines using Why3 (Schoolderman)
  • https://www.ru.nl/publish/pages/769526/marc_schoolderman.pdf
  • Detection of Bugs and Code Smells through Static Analysis of Go Source Code (Bergersen)
  • https://www.duo.uio.no/bitstream/handle/10852/53050/bergersen_msc.pdf
  • BTrDB: Optimizing Storage System Design for Timeseries Processing (Andersen, Culler)
  • https://www.usenix.org/node/194399
  • Risk Factor Disclosures: Do Managers and Markets Speak the Same Language?
  • https://www.sec.gov/comments/s7-06-16/s70616-369.pdf

2015

2014

2013

  • GoPar: Automatic Loop Parallelization of Go Programs (Wetherbee)
  • pdf
  • code
  • SCTP in Go ( Olivier Van Acker )
  • Keywords: Stream Control Transmission Protocol (SCTP); Transmission Control Protocol (TCP); Go; Networking;
  • pdf
  • Benchmarking Usability and Performance of Multicore Languages ( Sebastian Nanz, Scott West, Kaue Soares da Silveira, Bertrand Meyer)
  • arXiv:1302.2837 cs.DC
  • Examining the Expert Gap in Parallel Programming (Sebastian Nanz, Scott West, Kaue Soares da Silveira)
  • pdf
  • Acropolis: aggregated client request ordering by Paxos (Jothen)
  • https://brage.bibsys.no/xmlui//handle/11250/181825
  • Implementation and experimental evaluation of live replacement and reconfiguration (Lea)
  • https://brage.bibsys.no/xmlui//handle/11250/181813
  • Exploiting Parallelism in Coalgebraic Logic Programming (Komendantskaya, Schmidt, Heras)
  • https://arxiv.org/abs/1312.4454
  • Parallel Pattern Discovery (Egon Elbre), Master's Thesis, University of Tartu
  • pdf
  • code

2012

  • Time Warp on the Go (D'Angelo, Ferretti, Marzolla)
  • arxiv:1206.2772 cs.DC
  • Can Go address the multicore issues of today and the manycore problems of tomorrow? (S. Binet)
  • pdf
  • GoCxx: a tool to easily leverage C++ legacy code for multicore-friendly Go libraries and frameworks (S. Binet)
  • pdf
  • The Buffered π-Calculus: A Model for Concurrent Languages (Deng, Zhang, Deng, Zhong)
  • arxiv:1212.6183 cs.LO
  • Analysis of the Go runtime scheduler (Neil Deshpande,Erica Sponsler,Nathaniel Weiss)
  • pdf
  • A Comparative Study of Programming Models for Concurrency ( Kaue Soares da Silveira) – Porto Alegre: COMGRAD CIC UFRGS, 2012. Final Report (Bachelor)
  • pdf
  • Debian Code Search (Stapelberg)
  • pdf
  • Go’s Concurrency Constructs on the SCC (Prell, Rauber)
  • pdf
  • Comparing Parallel Performance of Go and C++ TBB on a Direct Acyclic Task Graph Using a Dynamic Programming Problem (Serfass, Tang)
  • http://www.ualr.edu/pxtang/papers/ACMSE12-comparing.pdf

2011

  • ng: What next-generation languages can teach us about HENP frameworks in the manycore era (S. Binet)
  • pdf
  • Serving Web Content with Dynamic Process Networks in Go (James Whitehead II)
  • DOI: 10.3233/978-1-60750-774-1-209
  • pdf

2010

  • GoHotDraw: Evaluating the Go Programming Language with Design Patterns (Schmager, Cameron, Noble)
  • pdf