sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: opencv
Issue: build farm is not testing for CUDA functionalities
Labels: priority: low,category: gpu/cuda (contrib),category: infrastructure,RFC

The development cycle of CUDA-related functionalities is inefficient and incomplete!
Kindly consider introducing a CUDA-enabled hardware, and making it part of the required tests.
Repository: rust
Issue: UnixStream does not have connect_timeout as TcpStream does.
Labels: T-libs-api,C-feature-request

https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.connect_timeout

vs

https://doc.rust-lang.org/std/os/unix/net/struct.UnixStream.html

Is this something that could be added directly without an RFC?
Repository: go
Issue: x/mobile: unexpected truncation of int type iOS->Go
Labels: mobile

Please answer these questions before submitting your issue. Thanks!


### What version of Go are you using (`go version`)?

> go version go1.10.3 darwin/amd64

`golang.org/x/mobile` commit `bceb7ef27cc623473a5b664d2a3450576dddff0f`

### Does this issue reproduce with the latest release?

Yep

### What operating system and processor architecture are you using (`go env`)?

```
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/verm/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/verm/remix/turntable/amp"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.10.3/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.10.3/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/36/92jbhtpj41s6q3w4fcq2v01w0000gn/T/go-build566537997=/tmp/go-build -gno-record-gcc-switches -fno-common"
```

### What did you do?

I had a function that needed to take a timeout, which internally is a `time.Duration` (`int64`). That's not a type I can use in the mobile bindings, so I used an `int` parameter. This gets translated as a `long` in Objective-C. My Obj-C code took an `int64_t` value and passed it as the long parameter of the wrapped Go function.

I then passed an Obj-C `int64_t` value that doesn't fit in a 32-bit int to this function.

### What did you expect to see?

I would expect that Go would see the original 64-bit value unaffected.

### What did you see instead?

Surprisingly, is that even though `long` (in Obj-C) and `int` (in Go) are 64-bit types on these platform (Mac OS X 10.13.6 / iOS simulator and iPhone 7 running iOS 11.4), the result in Go was an `int` holding the lower 32 bits of the original value. Specifically, for an input of `int64_t x = 86400000000000`, the value of the `int` passed to the Go function was `-1857093632`.

In this particular case, the correct choice in retrospect was clearly to use `int64` as the parameter type in Go. This results in a wrapper type in Objective-C of `int64_t`, and everything works fine.

But I am still surprised that `int` would behave in this way on a 64-bit system.
Repository: pytorch
Issue: [distributed] Synchronization on CUDA side with MPI backend
Labels: oncall: distributed,module: docs,triaged,module: c10d,distributed-backlog

## Issue description

`torch.distributed` with OpenMPI 3.0.0 as backend: when running "blocking" communication commands (e.g. `send`, `recv`, etc.  are blocking in MPI), CUDA side is not synchronized. OpenMPI does not do that automatically, PyTorch does not do that automatically. This incurred several timing issues in some of my applications. I think this should be either 
- documented: so that let users add things like `torch.cuda.synchronize` properly, or
- synchronized: synchronize the device (`cudaDeviceSynchronize`) before/after MPI blocking communication call. 

## System Info
- PyTorch or Caffe2: PyTorch
- How you installed PyTorch (conda, pip, source): source
- Build command you used (if compiling from source): `python setup.py install`
- OS: ubuntu 16.04
- PyTorch version: 0.4.0
- Python version: 3.6.4
- CUDA/cuDNN version: 8.0
- GPU models and configuration: GTX 1080
- GCC version (if compiling from source): 5.4.0
- CMake version: 3.11.1
- Versions of any other relevant libraries: OpenMPI 3.0.0

cc @jlin27 @mruberry @pietern @mrshenli @pritamdamania87 @zhaojuanmao @satgera @rohan-varma @gqchen @aazzolini @xush6528 @osalpekar @jiayisuse @agolynski
Repository: TypeScript
Issue: Intersection type of abstract classes does not throw error if same member exists in multiple abstract classes
Labels: Bug,Help Wanted

**TypeScript Version:**  3.0.1

**Search Terms:** "Intersection", "abstract"

**Code**

```ts
export type Constructor<T = {}> = new (...args: any[]) => T;

abstract class Outer1 {
  abstract same: number;
  abstract notSame: string;
}

abstract class Outer2 {
  abstract same: number;
}

function Mixin1<TBase extends Constructor>(Base: TBase) {
  abstract class Inner1 extends Base {   // Same as Outer1
    abstract same: number;
  }
  return Inner1;
}

function Mixin2<TBase extends Constructor>(Base: TBase) {
  abstract class Inner2 extends Base {   // Same as Outer2
    abstract same: number;
  }
  return Inner2;
}

function rollUp<T>(mixins): new (...args) => T {
  return mixins.reduce((acc, mixin) => mixin(acc), class Seed {});
}

class Example extends rollUp<Outer1 & Outer2>([Mixin1, Mixin2]) {
  // Compiler will throw error when "notSame" is unimplemented
  // Compiler DOES NOT throw error about non-implemented "same" member
}
```

**Expected behavior:**
Compiler should say that `same` is not implemented in regular class

**Actual behavior:**
Compiler does not throw error saying that `same` is not present in example class, despite throwing an error about `notSame`. It will throw an error, however, if the types of `same` are incompatible.

**Playground Link:** https://www.typescriptlang.org/play/#src=export%20type%20Constructor%3CT%20%3D%20%7B%7D%3E%20%3D%20new%20(...args%3A%20any%5B%5D)%20%3D%3E%20T%3B%0D%0A%0D%0Aabstract%20class%20Outer1%20%7B%0D%0A%20%20abstract%20same%3A%20number%3B%0D%0A%20%20abstract%20notSame%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Aabstract%20class%20Outer2%20%7B%0D%0A%20%20abstract%20same%3A%20number%3B%0D%0A%7D%0D%0A%0D%0Afunction%20Mixin1%3CTBase%20extends%20Constructor%3E(Base%3A%20TBase)%20%7B%0D%0A%20%20abstract%20class%20Inner1%20extends%20Base%20%7B%20%20%20%2F%2F%20Same%20as%20Outer1%0D%0A%20%20%20%20abstract%20same%3A%20number%3B%0D%0A%20%20%7D%0D%0A%20%20return%20Inner1%3B%0D%0A%7D%0D%0A%0D%0Afunction%20Mixin2%3CTBase%20extends%20Constructor%3E(Base%3A%20TBase)%20%7B%0D%0A%20%20abstract%20class%20Inner2%20extends%20Base%20%7B%20%20%20%2F%2F%20Same%20as%20Outer2%0D%0A%20%20%20%20abstract%20same%3A%20number%3B%0D%0A%20%20%7D%0D%0A%20%20return%20Inner2%3B%0D%0A%7D%0D%0A%0D%0Afunction%20rollUp%3CT%3E(mixins)%3A%20new%20(...args)%20%3D%3E%20T%20%7B%0D%0A%20%20return%20mixins.reduce((acc%2C%20mixin)%20%3D%3E%20mixin(acc)%2C%20class%20Seed%20%7B%7D)%3B%0D%0A%7D%0D%0A%0D%0Aclass%20Example%20extends%20rollUp%3COuter1%20%26%20Outer2%3E(%5BMixin1%2C%20Mixin2%5D)%20%7B%0D%0A%20%20%2F%2F%20Compiler%20will%20throw%20error%20when%20%22notSame%22%20is%20unimplemented%0D%0A%20%20%2F%2F%20Compiler%20DOES%20NOT%20throw%20error%20about%20non-implemented%20%22same%22%20member%0D%0A%7D
Repository: TypeScript
Issue: Bad formatting adding multiple properties to start of object literal
Labels: Bug,Help Wanted,Domain: Formatter

**TypeScript Version:**  As of #26588

**Code**

In `codeFixCannotFindModule_generateTypes_all.ts`:

```json
{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": { "*": ["types/*"] },
}
}
```

**Expected behavior:**

Closing brace of "compilerOptions" is indented.

**Actual behavior:**

Not indented.
Repository: godot
Issue: Going back in the Inspector while editing a GridMap node makes it and the previous node selected
Labels: bug,topic:editor,confirmed

<!-- Please search existing issues for potential duplicates before filing yours:
https://github.com/godotengine/godot/issues?q=is%3Aissue
-->

**Godot version:**
 2db4942


**Issue description:**
Basically this:
![screenshot at 2018-08-22 21-46-22](https://user-images.githubusercontent.com/30739239/44498458-f1438d80-a654-11e8-9a3b-25a5a45b2ef7.png)
Repository: vue
Issue: transitionend event isn't fired on element inside <transition> when leaving
Labels: transition

### Version
2.5.17

### Reproduction link
[https://jsfiddle.net/guanzo/xcLk083u/1/](https://jsfiddle.net/guanzo/xcLk083u/1/)





### Steps to reproduce
1. Open reproduction demo in a non-Chrome browser.
2. Attach `transitionend` listener to the component root $el. (It can be on any element, doesn't matter)
3. Transition out a child element with `<transition>` and `v-if`.
4. Listener callback isn't fired.

### What is expected?
The transitionend event is fired in all browsers.

### What is actually happening?
The transitionend event is only fired in Chrome.

---
My use case does NOT allow me to use the template, therefore I cannot use the <transition> javascript hooks, such as `leave` and `afterLeave`.  Regardless, this is inconsistent behavior and should be figured out. Is vue stopping the propagation of the event somehow?

For a complete context of the use case, read this issue: https://github.com/guanzo/vue-smooth-reflow/issues/3

<!-- generated by vue-issues. DO NOT REMOVE -->
Repository: pytorch
Issue: [Feature Request] Crop op or ConvTranspose with output_shape
Labels: caffe2

can you consider: 
Add Crop op or ConvTranspose with output_shape...
Currently, there is no way to do a FCN Segment gladly...
Repository: go
Issue: cmd/go: provide some way to get the gofmt binary path
Labels: NeedsDecision,GoCommand

We can ask cmd/go for the path to cmd/compile:

```
$ go tool -n compile
/Users/josh/go/tip/pkg/tool/darwin_amd64/compile
```

There does not seem to be any way to ask cmd/go where the gofmt binary is.

```
$ go tool -n fmt
go tool: no such tool "fmt"
$ go fmt -n
can't load package: package .: found packages main (w.go) and p (x.go) in /Users/josh/go/tip/src
```

cc @rsc @bcmills
Repository: go
Issue: cmd/compile: rename a bunch of things
Labels: compiler/runtime

Over time, I've noticed many things in the compiler that I'd like to rename, but I haven't because of the merge pain it causes and the review annoyance. I propose to use this issue to accumulate (and bikeshed) a list of renamings that we as a community want. Then a trusted contributor can do a single, automated bulk rename all in one commit.

I think this should happen shortly after the freeze starts. That gives everyone maximum opportunity to get all their CLs submitted. (Doing it early in the cycle is the worst idea, as it potentially breaks three months of private CL work.)

I'll start off the list with:

```
OPROC -> OGO
```

I'd also like new names for all of `Etop`, `Erv`, `Etype`, `Ecall`, `Efnstruct`, `Easgn`, and `Ecomplit`, but don't have good suggestions.
Repository: rust
Issue: Bad suggestion for overflowing hex literal in signed operation
Labels: C-enhancement,A-diagnostics,T-compiler

Code:
```rust
pub fn flip_msb(a: i32) -> i32 {
    a ^ 0x8000_0000
}
```
Diagnostic:
```
warning: literal out of range for i32
 --> src/lib.rs:2:9
  |
2 |     a ^ 0x8000_0000
  |         ^^^^^^^^^^^
  |
  = note: #[warn(overflowing_literals)] on by default
  = note: the literal `0x8000_0000` (decimal `2147483648`) does not fit into an `i32` and will become `-2147483648i32`
  = help: consider using `u32` instead
```
In this case using `u32` is not an option (you could use a `u32` literal and cast to `i32`, but that's not ideal). A better suggestion in this case would be to use `-0x8000_0000` instead.

This issue is, I think, more relevant to hex (or other non-decimal) representations, as for example `format!("{:#x}", i32::MIN)` would produce `0x80000000`, which could lead someone to think that that is a valid warning-free `i32` literal.
Repository: vscode
Issue: Add a command that redos the last command that was executed
Labels: feature-request,keybindings

Please add a "repeat last command" command and keybinding, as sometimes found in other other apps, e.g. Microsoft Office.

I want to press a shortcut, and for it to repeat whatever the last command was, so I don't have to find it again in the menu or the <kbd>ctrl-shift-p</kbd> box.

This is especially useful when doing a lot of editing.
Repository: rust
Issue: Support a TUI "live view" version of -Z self-profile.
Labels: C-enhancement,T-compiler,A-self-profile

Using [`tui`](https://docs.rs/tui) and by passing, say, the entire query stack to an "UI" thread 60 times per second, we can provide both a live view of the query stack, including when each entry started, *and* overall stats.

cc @nikomatsakis @michaelwoerister @wesleywiser @solson
Repository: flutter
Issue: [iOS Suggestion] FlutterPluginRegistrar support remoteControlReceivedWithEvent
Labels: platform-ios,engine,P3,a: plugins,team-ios,triaged-ios

I am writing a plugin package which can play music by using AVPlayer. 
I want to handle iPhone control in class FlutterPlugin, not in class AppDelegate. 
I have called `[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];` , but I can't listen the `remoteControlReceivedWithEvent ` in class FlutterPlugin.
Repository: rust
Issue: const fold .repeat() of  same-char string literals
Labels: I-slow,C-enhancement,A-codegen,T-compiler

````rustc 1.30.0-nightly (33b923fd4 2018-08-18)````

````rust
pub fn bla() ->  String {
    "aaa".to_string()
}
````
this currently generates
````asm
example::bla:
  push rbx
  mov rbx, rdi
  lea rsi, [rip + .L__unnamed_1]
  mov edx, 3
  call <alloc::string::String as core::convert::From<&'a str>>::from@PLT
  mov rax, rbx
  pop rbx
  ret

.L__unnamed_1:
  .zero 3,97
````

now if we used ````.repeat(3)```` (this only applies for strings consisting only of one character sort), 
````rust
pub fn bla() ->  String {
    "aaa".to_string().repeat(3)
}
````

we get this monster:
````asm
core::ptr::drop_in_place:
  mov rsi, qword ptr [rdi + 8]
  test rsi, rsi
  je .LBB0_1
  mov rdi, qword ptr [rdi]
  mov edx, 1
  jmp __rust_dealloc@PLT
.LBB0_1:
  ret

example::bla:
  push r14
  push rbx
  sub rsp, 24
  mov r14, rdi
  lea rsi, [rip + .L__unnamed_1]
  mov rdi, rsp
  mov edx, 3
  call <alloc::string::String as core::convert::From<&'a str>>::from@PLT
  mov rbx, qword ptr [rsp]
  mov rdx, qword ptr [rsp + 16]
  mov ecx, 3
  mov rdi, r14
  mov rsi, rbx
  call alloc::str::<impl str>::repeat@PLT
  mov rsi, qword ptr [rsp + 8]
  test rsi, rsi
  je .LBB1_3
  mov edx, 1
  mov rdi, rbx
  call __rust_dealloc@PLT
.LBB1_3:
  mov rax, r14
  add rsp, 24
  pop rbx
  pop r14
  ret
  mov rbx, rax
  mov rdi, rsp
  call core::ptr::drop_in_place
  mov rdi, rbx
  call _Unwind_Resume@PLT
  ud2

.L__unnamed_1:
  .zero 3,97
````

although we could probably just have
````asm
example::bla:
  push rbx
  mov rbx, rdi
  lea rsi, [rip + .L__unnamed_1]
  mov edx, 9
  call <alloc::string::String as core::convert::From<&'a str>>::from@PLT
  mov rax, rbx
  pop rbx
  ret

.L__unnamed_1:
  .zero 9,97
````
(diff to the first version)
````diff
@@ -2,11 +2,11 @@
   push rbx
   mov rbx, rdi
   lea rsi, [rip + .L__unnamed_1]
-  mov edx, 3
+  mov edx, 9
   call <alloc::string::String as core::convert::From<&'a str>>::from@PLT
   mov rax, rbx
   pop rbx
   ret
 .L__unnamed_1:
-  .zero 3,97
+  .zero 9,97
````
Repository: vscode
Issue: Allow <super> as a keybinding option in linux
Labels: feature-request,editor-multicursor

I am using VSCode on linux (fedora) and I want to bind the *super* key to:

"editor.multiCursorModifier": "super"

but currently, the only options are ctrlCmd and alt (which doesn't work because it toggles menu navigation).
I don't want to change it to ctrl+click because it's handy for links and function definitions, but multi-cursor editing is also very useful, and I can't make both happen with my keybinding options.
Repository: TypeScript
Issue: Overriding generic method inconsistently errors
Labels: Bug,Help Wanted

<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨

Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section!

Please help us by doing the following steps before logging an issue:
  * Search: https://github.com/Microsoft/TypeScript/search?type=Issues
  * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ

Please fill in the *entire* template below.
-->

<!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. -->
**TypeScript Version:**  3.1.0-dev.201xxxxx

<!-- Search terms you tried before logging this (so others can find this issue more easily) -->
**Search Terms:** override generic

**Code**

```ts
interface Foo {
    method<T>(): T;
}

// Error: Interface 'Bar<T>' incorrectly extends interface 'Foo'.
interface Bar<T extends Node> extends Foo {
    method<T2 extends T>(): T2;
}

// Uncommenting this suddenly fixes the error
// interface Foo {
//     method<T>(): T;
// }
```

Full error message:

```
Interface 'Bar<T>' incorrectly extends interface 'Foo'.
  Types of property 'method' are incompatible.
    Type '<T2 extends T>() => T2' is not assignable to type '<T>() => T'.
      Type 'T' is not assignable to type 'T'. Two different types with this name exist, but they are unrelated.
        Type 'Node' is not assignable to type 'T'.
```

**Expected behavior:** The error should always appear, or always not appear.

**Actual behavior:** A partial interface mysteriously removes the error

**Playground Link:** https://www.typescriptlang.org/play/#src=interface%20Foo%20%7B%0D%0A%20%20%20%20method%3CT%3E()%3A%20T%3B%0D%0A%7D%0D%0A%0D%0Ainterface%20Bar%3CT%20extends%20Node%3E%20extends%20Foo%20%7B%0D%0A%20%20%20%20method%3CT2%20extends%20T%3E()%3A%20T2%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F%20Uncommenting%20this%20suddenly%20fixes%20the%20error%0D%0A%2F%2F%20interface%20Foo%20%7B%0D%0A%2F%2F%20%20%20%20%20method%3CT%3E()%3A%20T%3B%0D%0A%2F%2F%20%7D

**Related Issues:** #23960
Repository: go
Issue: encoding/json: clarify merge semantics of Unmarshal
Labels: Documentation,NeedsFix

Please answer these questions before submitting your issue. Thanks!


### What version of Go are you using (`go version`)?

Go playground

### Does this issue reproduce with the latest release?

Yes

### What operating system and processor architecture are you using (`go env`)?

Go playground

### What did you do?

https://play.golang.org/p/QM3FKwmR9h1

### What did you expect to see?

```
{john}
{smith}
```
### What did you see instead?

```
{john }
{john smith}
```

### In short...

The Unmarshal documentation says:
> Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v.

~ https://golang.org/pkg/encoding/json/#Unmarshal

I assumed that after Unmarshal returns, the struct would *exactly* match the provided JSON. I found this quite surprising and I think the documentation should mention that "Fields that are not present in the JSON document will retain their original values." 

The existing functionality does give one an elegant way to set default values by having Unmarshal only update those fields which are present in the JSON document. I do not dispute that it is useful. Still, I would like to see the documentation mention this behaviour explicitly.
Repository: svelte
Issue: Break out individual compilers
Labels: compiler

As frequenters of the Discord server will know, I'm become obsessed lately with the idea of [compiling Svelte components to WebGL code](https://github.com/Rich-Harris/svelte-gl) (not for UI, but for building 3D/VR scenes — the sort of thing you'd traditionally use Three.js or A-Frame for). The easiest way to try this out would be to create a new compile target inside Svelte itself, but that would be somewhat disruptive for something that *may* turn out to be completely impossible.

An alternative, which I think is worth doing *anyway* as it would be good for the codebase, is to break out different compilers into their own packages. So instead of every `Node` subclass implementing `build` (for the `dom` target) and `ssr` (for the `ssr` target), the program generated in the initial phase would be handed off to a compiler, which would return something like a `{ code, map }` object (or otherwise something that can be easily turned into one, if that makes more sense in terms of code reuse etc).

So we'd have `@sveltejs/compile-dom`, `@sveltejs/compile-ssr` and (eventually) `@sveltejs/compile-gl`, each implementing the same interface. In time we could even add to that list — `@sveltejs/compile-native`, `@sveltejs/compile-tty` and so on.

In all likelihood this would need to be accompanied by separate runtime libraries for the different targets — `@sveltejs/lib-dom`, `@sveltejs/lib-ssr`, `@sveltejs/lib-common` (which `dom` and `ssr` would re-export from). 

Aside from all the speculative VR stuff, I think this would probably make the codebase less intimidating for new contributors, and it would be good discipline. (The `svelte` package would still bundle everything, we wouldn't have a nightmarish situation with peer dependencies getting out of sync.)

Any thoughts?
Repository: go
Issue: x/tools/go/ssa/interp: panic: no code for function: (reflect.Value).MapRange
Labels: Testing,NeedsFix,Tools

These brittle tests break again:

```
Input: boundmeth.go
PASS
Input: complit.go
panic: no code for function: (reflect.Value).MapRange
FAIL
To trace execution, run:
% go build golang.org/x/tools/cmd/ssadump && ./ssadump -build=C -test -run --interp=T complit.go

Input: coverage.go
PASS
Input: defer.go
PASS
Input: fieldprom.go
PASS
Input: ifaceconv.go
PASS
Input: ifaceprom.go
PASS
Input: initorder.go
PASS
Input: methprom.go
PASS
Input: mrvchain.go
PASS
Input: range.go
PASS
Input: recover.go
PASS
Input: reflect.go
PASS
Input: static.go
PASS
Input: callstack.go
PASS
The following tests failed:
	complit.go
--- FAIL: TestTestdataFiles (24.76s)
    interp_test.go:235: interp.Interpret([testdata/complit.go]) failed: exit code was 2
FAIL
FAIL	golang.org/x/tools/go/ssa/interp	25.796s
```
Repository: flutter
Issue: Support any gesture recognizers for embedded platform views
Labels: c: new feature,framework,engine,f: gestures,a: platform-views,c: proposal,P2,team-engine,triaged-engine

Right now the `gestureRecognizers` parameter in AndroidView is a list of `OneSequenceGestureRecognizer`s as currently only `OneSequenceGestureRecognizer`s support gesture arena teams.

Ideally `gestureRecognizers` should be a list of `GestureRecognizer`s.
Repository: go
Issue: encoding/json: no way to preserve the order of map keys
Labels: NeedsDecision,FeatureRequest

The encoding/json library apparently offers no way to decode data into a interface{} without scrambling the order of the keys in objects. Generally this isn't a correctness issue (per the spec the order isn't important), but it is super annoying to humans who may look at JSON data before and after it's been processed by a go program.

The most popular yaml library solves the problem like this: https://godoc.org/gopkg.in/yaml.v2#MapSlice