https://github.com/kataras/iris/issues
https://chat.iris-go.com
https://github.com/kataras/iris/releases
https://facebook.com/iris.framework
Developers are not forced to upgrade if they don't really need it. Upgrade whenever you feel ready.
How to upgrade: Open your command-line and execute this command: go get github.com/kataras/iris/v12@latest
.
New Features:
Fixes:
New Examples:
Implement new SetRegisterRule(iris.RouteOverride, RouteSkip, RouteError)
to resolve: kataras#1448
New Examples:
Fixes:
Various improvements and linting.
Minor fix on serving embedded files.
Fix [BUG] [iris.Default] RegisterView
Fix [BUG]Session works incorrectly when meets the multi-level TLDs.
Add Context.FindClosest(n int) []string
app := iris.New()
app.OnErrorCode(iris.StatusNotFound, notFound)
func notFound(ctx iris.Context) {
suggestPaths := ctx.FindClosest(3)
if len(suggestPaths) == 0 {
ctx.WriteString("404 not found")
return
}
ctx.HTML("Did you mean?<ul>")
for _, s := range suggestPaths {
ctx.HTML(`<li><a href="%s">%s</a></li>`, s, s)
}
ctx.HTML("</ul>")
}
Minor as many of you don't even use them but, indeed, they need to be covered here.
- Old i18n middleware(iris/middleware/i18n) was replaced by the i18n sub-package which lives as field at your application:
app.I18n.Load(globPathPattern string, languages ...string)
(see below) - Community-driven i18n middleware(iris-contrib/middleware/go-i18n) has a
NewLoader
function which returns a loader which can be passed atapp.I18n.Reset(loader i18n.Loader, languages ...string)
to change the locales parser - The Configuration's
TranslateFunctionContextKey
was replaced byLocaleContextKey
which Context store's value (if i18n is used) returns the current Locale which contains the translate function, the language code, the language tag and the index position of it - The
context.Translate
method was replaced bycontext.Tr
as a shortcut for the newcontext.GetLocale().GetMessage(format, args...)
method and it matches the view's function{{tr format args}}
too - If you used Iris Django view engine with
import _ github.com/flosch/pongo2-addons
you must change the import path to_ github.com/iris-contrib/pongo2-addons
or add a go mod replace to yourgo.mod
file, e.g.replace github.com/flosch/pongo2-addons => github.com/iris-contrib/pongo2-addons v0.0.1
.
All known issues.
Support for i18n is now a builtin feature and is being respected across your entire application, per say sitemap and views.
Refer to the wiki section: https://github.com/kataras/iris/wiki/Sitemap for details.
Iris generates and serves one or more sitemap.xml for your static routes.
Navigate through: https://github.com/kataras/iris/wiki/Sitemap for more.
- _examples/i18n
- _examples/sitemap
- _examples/desktop-app/blink
- _examples/desktop-app/lorca
- _examples/desktop-app/webview
- Add version suffix of the import path, learn why and see what people voted at issue #1370
- All errors are now compatible with go1.13
errors.Is
,errors.As
andfmt.Errorf
and a newcore/errgroup
package created - Fix #1383
- Report whether system couldn't find the directory of view templates
- Remove the
Party#GetReport
method, keepParty#GetReporter
which is anerror
and anerrgroup.Group
. - Remove the router's deprecated methods such as StaticWeb and StaticEmbedded_XXX
- The
Context#CheckIfModifiedSince
now returns ancontext.ErrPreconditionFailed
type of error when client conditions are not met. Usage:if errors.Is(err, context.ErrPreconditionFailed) { ... }
- Add
SourceFileName
andSourceLineNumber
to theRoute
, reports the exact position of its registration inside your project's source code. - Fix a bug about the MVC package route binding, see PR #1364
- Add
mvc/Application#SortByNumMethods
as requested at #1343 - Add status code
103 Early Hints
- Fix performance of session.UpdateExpiration on 200 thousands+ keys with new radix as reported at issue #1328
- New redis session database configuration field:
Driver: redis.Redigo()
orredis.Radix()
, see updated examples - Add Clusters support for redis:radix session database (
Driver: redis:Radix()
) as requested at issue #1339 - Create Iranian README_FA translation with PR #1360
- Create Korean README_KO translation with PR #1356
- Create Spanish README_ES and HISTORY_ES translations with PR #1344.
The iris-contrib/middleare and examples are updated to use the new github.com/kataras/iris/v12
import path.
- Set
Cookie.SameSite
toLax
when subdomains sessions share is enabled* - Add and update all experimental handlers
- New
XMLMap
function which wraps amap[string]interface{}
and converts it to a valid xml content to render throughContext.XML
method - Add new
ProblemOptions.XML
andRenderXML
fields to render theProblem
as XML(application/problem+xml) instead of JSON("application/problem+json) and enrich theNegotiate
to easily accept theapplication/problem+xml
mime.
Commit log: https://github.com/kataras/iris/compare/v11.2.7...v11.2.8
This minor version contains improvements on the Problem Details for HTTP APIs implemented on v11.2.5.
- Fix kataras#1335 (comment)
- Add
ProblemOptions
withRetryAfter
as requested at: kataras#1335 (comment). - Add
iris.JSON
alias forcontext#JSON
options type.
References:
Commit log: https://github.com/kataras/iris/compare/v11.2.6...v11.2.7
app.Get("/{alias:string regexp(^[a-z0-9]{1,10}\\.xml$)}", PanoXML)
app.Get("/{alias:string regexp(^[a-z0-9]{1,10}$)}", Tour)
Commit log: https://github.com/kataras/iris/compare/v11.2.5...v11.2.6
Commit log: https://github.com/kataras/iris/compare/v11.2.4...v11.2.5
- Fixes iris.Jet: no view engine found for '.jet' or '.html'
- Fixes ctx.ViewData not work with JetEngine
- New Feature: HTTP Method Override
- Fixes Poor performance of session.UpdateExpiration on 200 thousands+ keys with new radix lib by introducing the
sessions.Config.Driver
configuration field which defaults toRedigo()
but can be set toRadix()
too, future additions are welcomed.
Commit log: https://github.com/kataras/iris/compare/v11.2.3...v11.2.4
- New Feature: Handle different parameter types in the same path
- New Feature: Content Negotiation
- Context.ReadYAML
- Fixes kataras/neffos#1 (comment)
Sessions as middleware:
import "github.com/kataras/iris/v12/sessions"
// [...]
app := iris.New()
sess := sessions.New(sessions.Config{...})
app.Get("/path", func(ctx iris.Context){
session := sessions.Get(ctx)
// [work with session...]
})
- Add
Session.Len() int
to return the total number of stored values/entries. - Make
Context.HTML
andContext.Text
to accept an optional, variadic,args ...interface{}
input arg(s) too.
Read about the new release at: https://www.facebook.com/iris.framework/posts/3276606095684693