Releases: roc-lang/basic-webserver
0.13.0
Roc syntax to use this platform:
app [Model, init!, respond!] { web: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.13.0/fSNqJj3-twTrb0jJKHreMimVWD7mebDOj0mnslMm2GM.tar.br" }🆕 Additions
File.exists!andPath.exists!#125File.rename!andPath.rename!#125File.time_accessed!,File.time_modified!,File.time_created!#125File.size_in_bytes!#125File.is_readable!,File.is_executable!,File.is_writable!#125Sqlite.map_value_result#112Stdout.write_bytes!andStderr.write_bytes#137- More and better examples #111 #125 #133 #134 #141
💥 Breaking Changes
- Cmd API overhaul (see upgrade guide below) #145
Http.send!now returns aResult- Changed
Env.VarNotFoundtoEnv.VarNotFound(Str)#146 - Renamed
FieldNotFoundtoNoSuchFieldinSqlDecordeErr Tcp.ConnectErrnow takes a type variable parameter to allow for error accumulation #131
✨ Imrovements
- Massively increased test coverage #125 #127 #128 #130 #131 #132 #135 #140 #148
- Test on more systems #98 #99
- HTTP Request body body does not need to be UTF-8 #114
Url.pathsupports URIs in query parameters #115- Better doc comments #116 #131 #132 #137 #146 #148
- Error message improvements #122 #148
🐛 Fixes
- Fix undefined symbols for functions with missing implementations #125
Url.appendfix #128- Fixed Sqlite segmentation fault #110
Other Notable Changes
- Update rust dependencies #101 #121
- CI check to verify if common files are in sync with basic-cli #139
Full Changelog: 0.12.0...0.13.0
Contributors ❤️
In alphabetical order:
Cmd Upgrade Guide
Cmd.status! was commonly used when you just wanted to execute a Cmd without needing to process the output.
We now have the better named Cmd.exec_cmd! for this purpose.
The type of Cmd.status! also delivered the impression that it it could return non-zero exit codes like Ok(1), when this was not actually the case. I've regularly seen code where people checked if the exit code returned by status was 0, if you did, you can get rid if that now :) . If you actually want to take action based on the specific non-zero exit code (which is rarely needed), you can now use Cmd.exec_exit_code.
For all exec... functions, we now use Result in a more logical way, if the command had a 0 exit code, it will return with Ok(...). If not, you will get a specific error that will show useful info on Inspect.to_str. Perfect for error handling in hobby programs.
If you previously used Cmd.output!, you should most likely replace that with Cmd.exec_output!. Note the different output type, it should help simplify output and error handling.
0.12.0
Roc syntax to use this platform:
app [Model, init!, respond!] { pf: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.12.0/Q4h_In-sz1BqAvlpmCsBHhEJnn_YvfRRMiNACB_fBbk.tar.br" }Breaking changes
- Several Roc changes (see Roc migration guide) #93 #94
- Sqlite changes and improvements #89
Contributors ❤️
In alphabetical order:
Full Changelog: 0.11.0...0.12.0
0.11.0
Roc syntax to use this platform:
app [Model, init!, respond!] { pf: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.11.0/yWHkcVUt_WydE1VswxKFmKFM5Tlu9uMn6ctPVYaas7I.tar.br" }Breaking Changes
Full Changelog: 0.10.0...0.11.0
Migration guide
-
!is now part of the function name of effectful functions (= all platform functions), it is no longer syntax sugar forTask.await. -
I recommend taking a look at the changes in the hello-web example and copying them for your use case
-
All basic-webserver functions have changed to snake_case naming.
-
Taskis no longer needed, you can switch to usingResult,=>is used in the type of a function if it is effectful. Change:Task.oktoOkTask.errtoErrTasktoResultTask.loopto a recursive function- Example with
=>:
rocVersionCheck : Task {} _ rocVersionCheck =
To:
rocVersionCheck! : {} => Result {} _ rocVersionCheck! = \{} ->
-
We recommend the use of the
trykeyword:- replace
Stdout.line! "hello"withtry Stdout.line! "hello" - use it instead of
Task.await
- replace
Feel free to suggest additions to the migration guide!
0.10.0
Roc syntax to use this platform:
app [main] { pf: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.10.0/BgDDIykwcg51W8HA58FE_BjdzgXVk--ucv6pVb_Adik.tar.br" }Breaking Changes
- Reordered the arguments of File.write, File.writeBytes and File.writeUtf8 #78
- Added support for http extension methods #76
- Roc Str.split and List.split updates #79
Other Changes
New Contributors
- @jgresty made their first contribution in #76
- @isaacvando made their first contribution in #78
Full Changelog: 0.9.0...0.10.0
0.9.0
Roc syntax to use this platform:
app [main] { pf: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.9.0/taU2jQuBf-wB8EJb0hAkrYLYOGacUU5Y9reiHG45IY4.tar.br" }What's Changed
Full Changelog: 0.8.0...0.9.0
Upgrade Notes
Task is now builtin in Roc, to upgrade to this release you probably just need to remove Task imports like this one:
import pf.Task exposing [Task]0.8.0
Roc syntax to use this platform:
app [Model, server] {
pf: platform "https://github.com/roc-lang/basic-webserver/releases/download/0.8.0/jz2EfGAtz_y06nN7f8tU9AvmzhKK-jnluXQQGa9rZoQ.tar.br"
}What's Changed
- Replaced deprecated backpassing #69
Full Changelog: 0.7.0...0.8.0
0.7.0
0.6.0
What's Changed
- fix hardcoded host value in println by @joprice in #53
- macos-11 deprecated by @Anton-4 in #56
- flake update by @Anton-4 in #57
- Update code examples to use "!" syntax by @a-lavis in #55
- Add
Task.seqandTask.forEachby @lukewilliamboswell in #19 - ignore .DS_Store files by @bhansconnect in #59
- Sqlite improvements: Part 1 by @bhansconnect in #60
New Contributors
Full Changelog: 0.5.0...0.6.0
0.5.0
What's Changed
- back to normal roc url by @Anton-4 in #46
- Add
Task.resultby @lukewilliamboswell in #47 - test macos too by @Anton-4 in #48
- Change the "Listening on..." stdout message by @rtfeldman in #50
- Upgrade module syntax and fix import warnings by @agu-z in #52
New Contributors
- @rtfeldman made their first contribution in #50
Full Changelog: 0.4.0...0.5.0
0.4.0
roc webApp.roc --linker=legacy. See roc-lang/roc#3609 for more info.
Breaking changes
- New record decoding signature (#45)
Misc changes
- flake lock update (#44)
Full Changelog: 0.3.0...0.4.0