Comments (6)
@yossizahn, you have a good point and we can provide an Immutable
option so return values within the handler are immutable. Update the docs that by default all context values are valid until you return from the handler. This way we can keep zero memory allocation conversion enabled by default.
func main() {
app := fiber.New(&fiber.Settings{
Immutable: true,
})
app.Get("/:number", func(c *fiber.Ctx) {
number := c.Params("number") // immutable
go func() {
time.Sleep(1 * time.Second)
fmt.Println("number: ", number)
}()
})
app.Listen(3000)
}
from fiber.
Thanks for opening your first issue here! 🎉 Be sure to follow the issue template!
from fiber.
We use the same method as Fasthttp to convert strings and bytes without memory allocation, but proper use requires you to never change the original byte array, but that's a reasonable contract in many cases. I did not see many use-cases to persist values after returning from the handler, so this is an interesting topic.
from fiber.
It is true that it is possible to reproduce the same behavior in Fasthttp, but in Fasthttp it is more forgivable since a) it is clearly documented and b) there is no implicit contract implied in returning a []byte
saying that it won't change under your feet.
It would seem to me that returning a string
constitutes an implicit contract that it will follow string
conventions such as being immutable.
from fiber.
I'm closing this issue because it will be addressed in v1.8.0, feel free to re-open!
from fiber.
I wish the strings returned from the context were wrapped in a new unsafestring struct so when you wrote the code you are forced to call getUnsafeString() or something so it's obvious what you're doing. That way I would pass around unsafestring into functions so I know the string is mutable! All the other go docs say strings are immutable.
from fiber.
Related Issues (20)
- 📒 [docs]: Fix broken link in FAQ section HOT 1
- How to use Middleware handler HOT 3
- 🤗 [Question]: Why v3 has no option to DisableStartupMessage HOT 2
- 🤗 [Question]: upstream reply with long time HOT 8
- 🤗 [Question]: i get v3 docs are not exactly v3 docs HOT 1
- 📝 [Proposal]: Re-introduce the DisableStartupMessage configuration option in Fiber v3 HOT 2
- 🤗 [Question]: How to disable logger middleware in some endpoints HOT 2
- 🐛 [Bug]: Prefork Not Working on Fiber v3 HOT 2
- 📝 [Proposal]: shutdown procedure
- 🐛 [Bug]: incorrect routing when adding a default layout HOT 4
- 🐛 [Bug]: Middleware Monitor "CPU Usage" is a "static value". HOT 1
- 🐛 [Bug]: Appending handlers screws up routing HOT 2
- 🤗 [Question]: get param from path for proxy pass request HOT 1
- 🐛 [Bug]: Abort Signal HOT 4
- 🤗 [Question]: Enable DisableHeaderNormalizing config will occur wrong cors middleware behaviour HOT 10
- 🤗 [Question]: Question on ETag Docs HOT 1
- 🤗 [Question]: Does Fiber handle each request in different goroutines? HOT 2
- 📝 [Feature] [v2]: Add a function to get the session expiry HOT 5
- 🐛 [Bug]: setting a Logger that access TLSConnectionState() will break when `app.Server().MaxConnsPerIP` is set to a value HOT 7
- 🤗 [Question]: Fiber http with Cloudflare ssl reverse leading to 525, SSL handshake failed HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fiber.