diff --git a/HISTORY_ZH.md b/HISTORY_ZH.md
new file mode 100644
index 00000000..e49a74ff
--- /dev/null
+++ b/HISTORY_ZH.md
@@ -0,0 +1,185 @@
+# 更新记录
+
+### 想得到免费即时的支持?
+
+ https://github.com/kataras/iris/issues
+ https://chat.iris-go.com
+
+### 获取历史版本?
+
+ https://github.com/kataras/iris/releases
+
+### 我是否应该升级 Iris?
+
+如果没有必要,不会强制升级。如果你已经准备好了,可以随时升级。
+
+> Iris 使用 Golang 的 [vendor directory](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo) 特性, 避免依赖包的更改带来影响。
+
+**如何升级**: 打开命令行执行以下命令: `go get -u github.com/kataras/iris` 或者等待自动更新。
+
+# 2018 元旦 | v10.0.0 版本发布
+
+我们必须感谢 [Mrs. Diana](https://www.instagram.com/merry.dii/) 帮我们绘制的漂亮 [logo](https://iris-go.com/images/icon.svg)!
+
+如果有设计相关的需求,你可以[发邮件](mailto:Kovalenkodiana8@gmail.com)给他,或者通过 [instagram](https://www.instagram.com/merry.dii/) 给他发信息。
+
+
+
+
+
+在这个版本中,有许多内部优化改进,但只有两个重大变更和新增一个叫做 **hero** 的特性。
+
+> 新版本有 75 + 的变更提交, 如果你需要升级 Iris 请仔细阅读本文档。 为什么版本 9 跳过了? 你猜...
+
+## Hero 特性
+
+新增包 [hero](hero) 可以绑定处理任何依赖 `handlers` 的对象或函数。Hero funcs 可以返回任何类型的值,并发送给客户端。
+
+> 之前的绑定没有编辑器的支持, 新包 `hero` 为 Iris 带来真正的安全绑定。 Iris 会在服务器运行之前计算所有内容,所以它执行速度高,接近于原生性能。
+
+下面你会看到我们为你准备的一些截图,以便于理解:
+
+### 1. 路径参数 - 构建依赖
+
+
+
+### 2. 服务 - 静态依赖
+
+
+
+### 3. 请求之前 - 动态依赖
+
+
+
+`hero funcs` 非常容易理解,当你用过之后 **在也回不去了**.
+
+示例:
+
+- [基本用法](_examples/hero/basic/main.go)
+- [使用概览](_examples/hero/overview)
+
+## MVC
+
+You have to understand the `hero` package in order to use the `mvc`, because `mvc` uses the `hero` internally for the controller's methods you use as routes, the same rules applied to those controller's methods of yours as well.
+
+With this version you can register **any controller's methods as routes manually**, you can **get a route based on a method name and change its `Name` (useful for reverse routing inside templates)**, you can use any **dependencies** registered from `hero.Register` or `mvc.New(iris.Party).Register` per mvc application or per-controller, **you can still use `BeginRequest` and `EndRequest`**, you can catch **`BeforeActivation(b mvc.BeforeActivation)` to add dependencies per controller and `AfterActivation(a mvc.AfterActivation)` to make any post-validations**, **singleton controllers when no dynamic dependencies are used**, **Websocket controller, as simple as a `websocket.Connection` dependency** and more...
+
+示例:
+
+**如果你之前使用过 MVC ,请仔细阅读:MVC 包含一些破坏性的改进,但新的方式可以做更多,会让程序执行更快**
+
+**请阅读我们为你准备的示例**
+
+如果你现在需要升级,请对比新旧版本示例的不同,便于理解。
+
+| NEW | OLD |
+| -----------|-------------|
+| [Hello world](_examples/mvc/hello-world/main.go) | [OLD Hello world](https://github.com/kataras/iris/blob/v8/_examples/mvc/hello-world/main.go) |
+| [Session Controller](_examples/mvc/session-controller/main.go) | [OLD Session Controller](https://github.com/kataras/iris/blob/v8/_examples/mvc/session-controller/main.go) |
+| [Overview - Plus Repository and Service layers](_examples/mvc/overview) | [OLD Overview - Plus Repository and Service layers](https://github.com/kataras/iris/tree/v8/_examples/mvc/overview) |
+| [Login showcase - Plus Repository and Service layers](_examples/mvc/login) | [OLD Login showcase - Plus Repository and Service layers](https://github.com/kataras/iris/tree/v8/_examples/mvc/login) |
+| [Singleton](_examples/mvc/singleton) | **新增** |
+| [Websocket Controller](_examples/mvc/websocket) | **新增** |
+| [Vue.js Todo MVC](_examples/tutorial/vuejs-todo-mvc) | **新增** |
+
+## context#PostMaxMemory
+
+移除旧版本的常量 `context.DefaultMaxMemory` 替换为配置 `WithPostMaxMemory`.
+
+```go
+// WithPostMaxMemory sets the maximum post data size
+// that a client can send to the server, this differs
+// from the overral request body size which can be modified
+// by the `context#SetMaxRequestBodySize` or `iris#LimitRequestBodySize`.
+//
+// Defaults to 32MB or 32 << 20 if you prefer.
+func WithPostMaxMemory(limit int64) Configurator
+```
+
+如果你使用老版本的常量,你需要更改一行代码.
+
+使用方式:
+
+```go
+import "github.com/kataras/iris"
+
+func main() {
+ app := iris.New()
+ // [...]
+
+ app.Run(iris.Addr(":8080"), iris.WithPostMaxMemory(10 << 20))
+}
+```
+
+## context#UploadFormFiles
+
+新方法可以多文件上传, 应用于常见的上传操作, 它是一个非常有用的函数。
+
+```go
+// UploadFormFiles uploads any received file(s) from the client
+// to the system physical location "destDirectory".
+//
+// The second optional argument "before" gives caller the chance to
+// modify the *miltipart.FileHeader before saving to the disk,
+// it can be used to change a file's name based on the current request,
+// all FileHeader's options can be changed. You can ignore it if
+// you don't need to use this capability before saving a file to the disk.
+//
+// Note that it doesn't check if request body streamed.
+//
+// Returns the copied length as int64 and
+// a not nil error if at least one new file
+// can't be created due to the operating system's permissions or
+// http.ErrMissingFile if no file received.
+//
+// If you want to receive & accept files and manage them manually you can use the `context#FormFile`
+// instead and create a copy function that suits your needs, the below is for generic usage.
+//
+// The default form's memory maximum size is 32MB, it can be changed by the
+// `iris#WithPostMaxMemory` configurator at main configuration passed on `app.Run`'s second argument.
+//
+// See `FormFile` to a more controlled to receive a file.
+func (ctx *context) UploadFormFiles(
+ destDirectory string,
+ before ...func(string, string),
+ ) (int64, error)
+```
+
+这里是相关示例 [here](_examples/http_request/upload-files/main.go).
+
+## context#View
+
+Just a minor addition, add a second optional variadic argument to the `context#view` method to accept a single value for template binding.
+When you just want one value and not key-value pairs, you used to use an empty string on the `ViewData`, which is fine, especially if you preload these from a previous handler/middleware in the request handlers chain.
+
+```go
+func(ctx iris.Context) {
+ ctx.ViewData("", myItem{Name: "iris" })
+ ctx.View("item.html")
+}
+```
+
+等同于:
+
+```go
+func(ctx iris.Context) {
+ ctx.View("item.html", myItem{Name: "iris" })
+}
+```
+
+```html
+Item's name: {{.Name}}
+```
+
+## context#YAML
+
+新增 `context#YAML` 函数, 解析结构体到 yaml。
+
+```go
+// YAML marshals the "v" using the yaml marshaler and renders its result to the client.
+func YAML(v interface{}) (int, error)
+```
+
+## Session#GetString
+
+`sessions/session#GetString` can now return a filled value even if the stored value is a type of integer, just like the memstore, the context's temp store, the context's path parameters and the context's url parameters.