Golang News http://golangnews.com Jobs, Code, Videos and News for Go hackers - everything about the go programming language Mon, 24 Jun 2019 15:19:00 +0000 Code: flowascode - Run a workflow defined in a YAML file Define and run a workflow using a yaml configuration file 2 points posted by Sascha Andres https://github.com/sascha-andres/flowascode 4024 Mon, 24 Jun 2019 15:16:00 +0000 demoservice - a go service that simulates abnormal situations 4 points posted by lolly https://github.com/wolfgangB33r/demoservice 4015 Mon, 17 Jun 2019 08:40:00 +0000 Code - tankpreise - gas price query 3 points posted by Sascha Andres https://github.com/sascha-andres/tankpreise 4017 Tue, 18 Jun 2019 14:42:00 +0000 echoip - IP address lookup service 5 points posted by Everton Marques https://github.com/mpolden/echoip 4009 Thu, 13 Jun 2019 14:29:00 +0000 Proposal: A built-in Go error check function, try #errors <p>We propose a new built-in function called <code>try</code>, designed specifically to eliminate the boilerplate <code>if</code>&nbsp;statements typically associated with error handling in Go. No other language changes are suggested. We advocate using the existing <code>defer</code>&nbsp;statement and standard library functions to help with augmenting or wrapping of errors. This minimal approach addresses most common scenarios while adding very little complexity to the language. The <code>try</code>&nbsp;built-in is easy to explain, straightforward to implement, orthogonal to other language constructs, and fully backward-compatible. It also leaves open a path to extending the mechanism, should we wish to do so in the future.</p> 10 points posted by kenny https://github.com/golang/proposal/blob/master/design/32437-try-builtin.md#proposal-a-built-in-go-error-check-function-try 3992 Wed, 05 Jun 2019 05:52:00 +0000 tint - a terminal style module for go 3 points posted by gopher https://github.com/printzero/tint 4011 Fri, 14 Jun 2019 09:01:00 +0000 script - making it easy to write shell-like scripts in Go <p><code>script</code>&nbsp;is a Go library for doing the kind of tasks that shell scripts are good at: reading files, executing subprocesses, counting lines, matching strings, and so on.</p><div><br></div> 5 points posted by kenny https://github.com/bitfield/script 4002 Mon, 10 Jun 2019 20:27:00 +0000 tbls is a CI-Friendly tool for documenting a database, written in Go. 9 points posted by lolly https://github.com/k1LoW/tbls 3985 Sun, 26 May 2019 07:34:00 +0000 update-golang 0.21 - easily fetch and install new Golang releases 3 points posted by Everton Marques https://github.com/udhos/update-golang/releases/tag/v0.21 4008 Thu, 13 Jun 2019 14:27:00 +0000 ANN: Zstandard Go compression package <span id="docs-internal-guid-1f53113f-7fff-6786-208e-adc5a165a1f0"><p dir="ltr">I am happy to announce the availability of the first Zstandard compressor written in Go. This package will allow you to get very fast compression to the Zstandard format.</p><p dir="ltr">The current compressor is focused mainly on speed and outperforms gzip/deflate typically by a factor of 3x for similar compression ratios. It is also within a reasonable margin, typically 0.75x the throughput of the reference library called with cgo. Also, it has CRC checks and better error handling compared to the cgo library.</p><p dir="ltr">Alongside the previously released decompressor, this will allow you to do very fast compression and decompression with unrivaled efficiency in pure Go.</p><p dir="ltr">Both a stream and byte blob compressor is made available and both operate without allocations if re-used, so it will also play nicely with the rest of your application.</p><p dir="ltr">As a bonus, there is a Snappy -&gt; Zstandard stream converter. This was mainly a development tool, but could be useful for some.</p><p dir="ltr">Current status: The main goal for the initial release was to get something that would be a feasible replacement for both deflate/gzip and the cgo wrapper. The package in its current shape allows to replace both for scenarios where fast compression is required. The compressor has been (fuzz) tested, but may still contain subtle bugs - so if you are dealing with critical data, you might want to do your own testing first.</p><p dir="ltr">Feedback and experience reports are appreciated. This has taken most of my free time the last several months and has been a great learning experience. I plan to dive into the more efficient (and slower) compression modes next - but feel free to write if you desperately need something else.</p><p dir="ltr">Also, it seems like Go is the first language to get a Zstandard implementation that isn’t a wrapper around the reference library. Yay!</p><br><p dir="ltr">Package: <a href="https://github.com/klauspost/compress/tree/master/zstd#zstd">https://github.com/klauspost/compress/tree/master/zstd#zstd</a></p><br> 7 points posted by Klaus Post https://github.com/klauspost/compress/tree/master/zstd#zstd 3989 Sun, 02 Jun 2019 16:38:00 +0000 g-fu - a Lisp to Go <p><a href="https://github.com/codr7/g-fu">g-fu</a>&nbsp;is a pragmatic <a href="https://xkcd.com/297/" rel="nofollow">Lisp</a>&nbsp;developed and embedded in Go. This document describes the initial release; which implements an extensible, tree-walking interpreter for a fully block-structured Lisp-dialect with quasi-quotation and macros, lambdas, optimized tail-recursion, opt-/varargs, first class environments, user-defined setters, threads and channels.</p> 6 points posted by kenny https://github.com/codr7/g-fu 3983 Sat, 25 May 2019 06:39:00 +0000 Venom - manage and run your integration tests with efficiency Venom is tool for integration tests with all sorts of executors (http, smtp, imap, BDb, gRPC and more...)<br> 9 points posted by Matous Dzivjak https://github.com/ovh/venom 3963 Thu, 09 May 2019 06:09:00 +0000 🏆goldmark - A markdown parser #commonmark A markdown parser written in Go. Easy to extend, standard(CommonMark) compliant, well structured. - yuin/goldmark 7 points posted by kenny https://github.com/yuin/goldmark 3971 Tue, 14 May 2019 20:14:00 +0000 cointop - a terminal app for tracking cryptocurrencies 9 points posted by Miguel Mota https://github.com/miguelmota/cointop 3948 Sun, 28 Apr 2019 02:25:00 +0000 Routebuilder - build your http routes fluently #web 4 points posted by hankmartinez https://github.com/askm3/routebuilder 3988 Fri, 31 May 2019 11:04:00 +0000 Scraply - scrape html content and convert it to JSON APIs Scraply is a simple dom scraper to fetch information from any html website 3 points posted by Mohammed Al Ashaal https://github.com/alash3al/scraply 3986 Wed, 29 May 2019 16:24:00 +0000 Go Best Practices at Joyent by Sean Chittenden This is now abandoned and contains some defunct references (GOPATH for example), but is of historical interest I think.&nbsp; 13 points posted by kenny https://github.com/joyent/rfd/blob/master/rfd/0106/README.adoc 3870 Sat, 23 Mar 2019 17:08:00 +0000 pacgo - A Pac Man clone written in Go (with emojis!) 8 points posted by kenny https://github.com/danicat/pacgo 3911 Fri, 12 Apr 2019 07:52:00 +0000 radix - a fast string sort algorithm Uses a fast string sorting algorithm (MSD radix sort)<br> 4 points posted by gopher https://github.com/yourbasic/radix 3973 Wed, 15 May 2019 12:07:00 +0000 openapi-assert - Asserting data against OpenAPI docs. #openapi #assert #swagger 4 points posted by faabiosr https://github.com/faabiosr/openapi-assert 3970 Mon, 13 May 2019 21:25:00 +0000 go-sfdc is a library used to interface to Salesforce APIs using golang 4 points posted by tomf https://github.com/g8rswimmer/go-sfdc 3968 Sat, 11 May 2019 18:33:00 +0000 ko - Build and deploy Go applications on Kubernetes 8 points posted by lolly https://github.com/google/ko 3861 Fri, 22 Mar 2019 14:22:00 +0000 sqlrows - Go static code analyzer which helps uncover bugs of database/sql.Rows. 6 points posted by timakin https://github.com/gostaticanalysis/sqlrows 3892 Wed, 03 Apr 2019 15:54:00 +0000 ledrace - TinyGo implementation of Open LED Race 5 points posted by lolly https://github.com/conejoninja/ledrace 3930 Fri, 19 Apr 2019 21:44:00 +0000 crdt - a Go implementation of CRDTs <p>This is an implementation of <a href="https://hal.inria.fr/inria-00555588/document" rel="nofollow">Convergent and Commutative Replicated Data Types</a>&nbsp;in <a href="https://golang.org/" rel="nofollow">Go</a>.</p> 5 points posted by kenny https://github.com/neurodrone/crdt 3921 Mon, 15 Apr 2019 16:30:00 +0000 conbox - busybox in Go 4 points posted by Everton Marques https://github.com/udhos/conbox 3945 Thu, 25 Apr 2019 22:25:00 +0000 Generis, a Go preprocessor for generics, free-form macros and HTML templating <p>Just to inform you that I’ve just released a first version of <b>Generis</b>, a lightweight code preprocessor adding the following features to the Go language :</p> <ul> <li>Generics.</li> <li>Free-form macros.</li> <li>Conditional compilation.</li> <li>HTML templating.</li> <li>Allman style conversion.</li> </ul><div><a href="https://github.com/senselogic/GENERIS">https://github.com/senselogic/GENERIS</a><b><br></b></div><div><br></div><div>It’s similar in function to both Ego and Genny, but implemented as a free-form C++ like preprocessor... </div><div><b><br></b></div><div><b>Sample code :</b><br></div><div><pre><span class="pl-k">package main; <span class="pl-c"><span class="pl-c">// -- IMPORTS <span class="pl-k">import ( <span class="pl-s"><span class="pl-pds">"html<span class="pl-pds">" <span class="pl-s"><span class="pl-pds">"io<span class="pl-pds">" <span class="pl-s"><span class="pl-pds">"log<span class="pl-pds">" <span class="pl-s"><span class="pl-pds">"net/http<span class="pl-pds">" <span class="pl-s"><span class="pl-pds">"strconv<span class="pl-pds">" ); <span class="pl-c"><span class="pl-c">// -- DEFINITIONS #define <span class="pl-v">DebugMode #as <span class="pl-c1">true <span class="pl-c"><span class="pl-c">// ~~ #define <span class="pl-v">HttpPort #as <span class="pl-c1">8080 <span class="pl-c"><span class="pl-c">// ~~ #define <span class="pl-v">WriteLine( {{text}} ) #as log.<span class="pl-c1">Println( {{text}} ) <span class="pl-c"><span class="pl-c">// ~~ #define local {{variable}} : {{<span class="pl-k">type}}; #as <span class="pl-k">var {{variable}} {{<span class="pl-k">type}}; <span class="pl-c"><span class="pl-c">// ~~ #define <span class="pl-v">DeclareStack( {{<span class="pl-k">type}}, {{name}} ) #as <span class="pl-c"><span class="pl-c">// -- TYPES <span class="pl-k">type {{name}}Stack <span class="pl-k">struct { <span class="pl-v">ElementArray []{{<span class="pl-k">type}}; } <span class="pl-c"><span class="pl-c">// -- INQUIRIES <span class="pl-c1">func ( stack * {{name}}Stack ) <span class="pl-c1">IsEmpty( ) <span class="pl-k">bool { <span class="pl-k">return <span class="pl-c1">len( stack.<span class="pl-smi">ElementArray ) == <span class="pl-c1">0; } <span class="pl-c"><span class="pl-c">// -- OPERATIONS <span class="pl-c1">func ( stack * {{name}}Stack ) <span class="pl-c1">Push( element {{<span class="pl-k">type}} ) { stack.<span class="pl-smi">ElementArray = <span class="pl-c1">append( stack.<span class="pl-smi">ElementArray, element ); } <span class="pl-c"><span class="pl-c">// ~~ <span class="pl-c1">func ( stack * {{name}}Stack ) <span class="pl-c1">Pop( ) {{<span class="pl-k">type}} { local element : {{<span class="pl-k">type}}; element = stack.<span class="pl-smi">ElementArray[ <span class="pl-c1">len( stack.<span class="pl-smi">ElementArray ) - <span class="pl-c1">1 ]; stack.<span class="pl-smi">ElementArray = stack.<span class="pl-smi">ElementArray[ : <span class="pl-c1">len( stack.<span class="pl-smi">ElementArray ) - <span class="pl-c1">1 ]; <span class="pl-k">return element; } #end <span class="pl-c"><span class="pl-c">// ~~ #define <span class="pl-v">DeclareStack( {{<span class="pl-k">type}} ) #as <span class="pl-v">DeclareStack( {{<span class="pl-k">type}}, {{<span class="pl-k">type:PascalCase}} ) <span class="pl-c"><span class="pl-c">// -- TYPES <span class="pl-c1">DeclareStack( <span class="pl-k">string ) <span class="pl-c1">DeclareStack( <span class="pl-k">int32 ) <span class="pl-c"><span class="pl-c">// -- FUNCTIONS <span class="pl-k">func <span class="pl-v">HandleRootPage( response_writer http.<span class="pl-smi">ResponseWriter, request * http.<span class="pl-smi">Request ) { local boolean : <span class="pl-k">bool; local natural : <span class="pl-k">uint; local integer : <span class="pl-k">int; local real : <span class="pl-k">float64; local escaped_text, text : <span class="pl-k">string; local integer_stack : <span class="pl-v">Int32Stack; boolean = <span class="pl-c1">true; natural = <span class="pl-c1">10; integer = <span class="pl-c1">20; real = <span class="pl-c1">30.0; text = <span class="pl-s"><span class="pl-pds">"text<span class="pl-pds">"; escaped_text = <span class="pl-s"><span class="pl-pds">"&lt;escaped text/&gt;<span class="pl-pds">"; integer_stack.<span class="pl-c1">Push( <span class="pl-c1">10 ); integer_stack.<span class="pl-c1">Push( <span class="pl-c1">20 ); integer_stack.<span class="pl-c1">Push( <span class="pl-c1">30 ); #write response_writer &lt;!DOCTYPE html&gt; &lt;html lang=<span class="pl-s"><span class="pl-pds">"en<span class="pl-pds">"&gt; &lt;head&gt; &lt;meta charset=<span class="pl-s"><span class="pl-pds">"utf-8<span class="pl-pds">"&gt; &lt;title&gt;&lt;%= request.<span class="pl-smi">URL.<span class="pl-smi">Path %&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% <span class="pl-k">if ( boolean ) { %&gt; &lt;%= <span class="pl-s"><span class="pl-pds">"URL : <span class="pl-pds">" + request.<span class="pl-smi">URL.<span class="pl-smi">Path %&gt; &lt;br/&gt; &lt;%@ natural %&gt; &lt;%# integer %&gt; &lt;%&amp; real %&gt; &lt;br/&gt; &lt;%~ text %&gt; &lt;%= escaped_text %&gt; &lt;%= <span class="pl-s"><span class="pl-pds">"&lt;<span class="pl-c1">%% ignored <span class="pl-c1">%%&gt;<span class="pl-pds">" %&gt; &lt;%% ignored %%&gt; &lt;% } %&gt; &lt;br/&gt; <span class="pl-v">Stack : &lt;br/&gt; &lt;% <span class="pl-k">for !integer_stack.<span class="pl-c1">IsEmpty() { %&gt; &lt;%# integer_stack.<span class="pl-c1">Pop() %&gt; &lt;% } %&gt; &lt;/body&gt; &lt;/html&gt; #end } <span class="pl-c"><span class="pl-c">// ~~ <span class="pl-k">func <span class="pl-en">main() { http.<span class="pl-c1">HandleFunc( <span class="pl-s"><span class="pl-pds">"/<span class="pl-pds">", HandleRootPage ); #<span class="pl-k">if DebugMode <span class="pl-c1">WriteLine( <span class="pl-s"><span class="pl-pds">"Listening on http://localhost:HttpPort<span class="pl-pds">" ); #end log.<span class="pl-c1">Fatal( http.<span class="pl-c1">ListenAndServe( <span class="pl-s"><span class="pl-pds">":HttpPort<span class="pl-pds">", <span class="pl-c1">nil ) ); }</pre></div> 4 points posted by Ecstatic Coder https://github.com/senselogic/GENERIS 3935 Sun, 21 Apr 2019 11:34:00 +0000 minikeyvalue - A distributed key value store in under 200 lines 4 points posted by lolly https://github.com/geohot/minikeyvalue 3933 Sat, 20 Apr 2019 19:29:00 +0000 timeliner - all your digital life on a single timeline, stored locally <p>Timeliner is a personal data aggregation utility. It collects all your digital things from pretty much anywhere and stores them on your own computer, indexes them, and projects them onto a single, unified timeline.</p> <p>The intended purpose of this tool is to help preserve personal and family history.</p> 4 points posted by kenny https://github.com/mholt/timeliner 3931 Sat, 20 Apr 2019 10:09:00 +0000 bus - 🔊Minimalist message bus implementation for internal communication 3 points posted by jabber https://github.com/mustafaturan/bus 3957 Mon, 06 May 2019 02:46:00 +0000 go-mod-outdated - An easy way to find outdated dependencies of your Go projects go-mod-outdated provides a table view of the go list -u -m -json all command which lists all dependencies of a Go project and their available minor and patch updates. It also provides a way to filter indirect dependencies and dependencies without updates. 3 points posted by Kep6q0q84cKMGeAksh1 https://github.com/psampaz/go-mod-outdated 3944 Thu, 25 Apr 2019 19:52:00 +0000 Moving from Go 1 to Go 2 13 points posted by kenny https://github.com/golang/proposal/blob/master/design/28221-go2-transitions.md 3624 Wed, 24 Oct 2018 08:59:00 +0000 Gocity - see code as 3d cities 11 points posted by drogo https://go-city.github.io/#/github.com/rodrigo-brito/gocity 3640 Sun, 04 Nov 2018 13:56:00 +0000 Show: Dataflow Kit - extract structured data from web sites. Web sites scraping.   11 points posted by slotix https://github.com/slotix/dataflowkit 3501 Mon, 13 Aug 2018 19:44:00 +0000 tinygo - a Go compiler for small devices, based on LLVM 9 points posted by kenny https://github.com/aykevl/tinygo 3622 Tue, 23 Oct 2018 14:54:00 +0000 survey - a go library for building interactive prompts survey - a go library for building interactive prompts with full support for windows and posix terminals. 8 points posted by kenny https://github.com/AlecAivazis/survey 3637 Fri, 02 Nov 2018 19:31:00 +0000 A Go Custom Flutter Engine Embedder for desktop 7 points posted by kenny https://github.com/Drakirus/go-flutter-desktop-embedder 3775 Fri, 18 Jan 2019 13:53:00 +0000 go-t - A fast, simple and easy to use command-line client for Twitter written in Go. 🚀📨 7 points posted by cbrgm https://github.com/cbrgm/go-t 3750 Sun, 30 Dec 2018 20:41:00 +0000 qri - a distributed version control system You're invited to a data party! A global dataset version control system (GDVCS) built on the distributed web<br> 6 points posted by gopher https://github.com/qri-io/qri 3868 Sat, 23 Mar 2019 14:04:00 +0000 Fathom. Simple, trustworthy website analytics. Built with Go & Preact This is also available on the digital ocean marketplace.&nbsp; 6 points posted by kenny https://github.com/usefathom/fathom 3848 Sat, 16 Mar 2019 18:58:00 +0000 go-echarts: 🎨The adorable charts library for Golang <a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/19553554/52535979-c0d0e680-2d8f-11e9-85c8-2e9f659e7c6f.png"><img src="https://user-images.githubusercontent.com/19553554/52535979-c0d0e680-2d8f-11e9-85c8-2e9f659e7c6f.png" width="300" height="300"></a>&nbsp; 6 points posted by kenny https://github.com/chenjiandongx/go-echarts 3840 Thu, 14 Mar 2019 00:03:00 +0000 Show: Qamel, QML binding for Go 6 points posted by acrophobic https://github.com/RadhiFadlillah/qamel 3761 Tue, 08 Jan 2019 01:29:00 +0000 autopprof - pprof made easy at development time for Go 6 points posted by kenny https://github.com/rakyll/autopprof 3683 Thu, 22 Nov 2018 05:54:00 +0000 golua - A Lua 5.3 engine implemented in Go 6 points posted by kenny https://github.com/Azure/golua 3668 Fri, 16 Nov 2018 16:21:00 +0000 A Distributed Key/Value store using Raft for concensus with a Redis compatible API <p>A <a href="https://github.com/prologic/bitcask">Bitcask</a>&nbsp;Distributed Key/Value store using <a href="https://github.com/hashicorp/raft">Raft</a>&nbsp;for concensus with a <a href="https://redis.org/" rel="nofollow">Redis</a>&nbsp;compatible API written in <a href="https://golang.org/" rel="nofollow">Go</a>.</p> <p>Based off of <a href="https://github.com/tidwall/kvnode">kvnode</a>. (See <a href="https://github.com/prologic/bitraft/blob/master/LICENSE.old">LICENSE.old</a>)</p> <ul><li>Redis compatible API</li> <li>Bitcask disk-based storage</li> <li>Raft support with <a href="https://github.com/tidwall/finn">Finn</a>&nbsp;commands</li> <li>Compatible with existing Redis clients</li> </ul> 5 points posted by James Mills https://github.com/prologic/bitraft 3858 Thu, 21 Mar 2019 20:42:00 +0000 instagraph - Social graph network of your Instagram account. 5 points posted by AhmadrezaZibaei https://github.com/ahmdrz/instagraph 3827 Tue, 05 Mar 2019 07:33:00 +0000 Twisk - Golang RPC starter kit 5 points posted by dsxack https://github.com/ribice/twisk 3800 Tue, 12 Feb 2019 06:46:00 +0000 go-fuzzyfinder - fzf-like fuzzy-finder as a Go library #fuzzyfinder 5 points posted by ktr https://github.com/ktr0731/go-fuzzyfinder 3797 Sat, 09 Feb 2019 06:38:00 +0000 iv - APL interpreter and stream processor 5 points posted by gopher https://github.com/ktye/iv 3781 Fri, 25 Jan 2019 19:35:00 +0000 SQLer - Turn Your SQL queries into RESTful APIs without any programming language 5 points posted by Mohammed Al Ashaal https://github.com/alash3al/sqler 3762 Tue, 08 Jan 2019 17:28:00 +0000