Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Go - 模块管理 最小版本号原则 #55

Open
Petelin opened this issue Dec 10, 2019 · 0 comments
Open

Go - 模块管理 最小版本号原则 #55

Petelin opened this issue Dec 10, 2019 · 0 comments

Comments

@Petelin
Copy link
Owner

Petelin commented Dec 10, 2019

Go - 模块管理 最小版本号原则

https://research.swtch.com/vgo
https://blog.golang.org/using-go-modules

Go 1.11 and 1.12 开始引入mod, 其中一个原则很有意思

Minimal Version Selection

https://research.swtch.com/vgo-mvs

image

字母是单独的package. 箭头代表他们声明的依赖关系

image

这幅图是表示从所有的依赖里面找到最大的那个。
这有两个问题

  1. 为什么允许人家声明依赖1.1但是你给他一个1.2也work
  2. Minimal Version Selection 怎么就minimal了,这不是升级到最大的了吗?
  3. 这样有什么优势呢?
  4. go.sum 有什么用?

回答:

  1. 因为要求高级版本必须向下兼容,如果兼容不了,请提供一个新的package v2
  2. 这个是相比其他实现,其他实现总是最新的
  3. 意味着可重现,稳定。意味着只需要(向前升级,有问题就升级)?不懂别的怎么做不到的,只要保证向下兼容就可以做到的的吧
  4. go mod 原则上就可以保证稳定依赖了, sum用hash保证不被篡改,安全方面的
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant