-
Notifications
You must be signed in to change notification settings - Fork 0
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
WIP #781
Comments
I think the only solution is to hurry up Nim |
this won't solve the underlying problem, if a bug is discovered in 2.0, I don't want to wait 10 years until 3.0 comes out. Hence the position I'm articulating in the "stdlib policy" PR in favor of fixing bugs, not working around it. |
I agree, but I think about the way that fixes/improvements gets actually accepted and merged... 🤷 |
Make sense. Alas, I wish no PR would be reverted(Or at least providing the alternative way right after reverting) even if the new policy were to be merged. |
This only shows people using the language wrong, they are never asserting inputs, nor outputs, DrNim would be perfect, but it wont work currently, and no one knows when it will work realistically. Testament/unittest is awesome, but tests the whole thing, DBC module on stdlib can catch that, theres no way it dont, If you dont add DBC people keep inventing random "aliases" into unittesting tools, Documentation then strongly recommends using DBC for all core/serious/mission critical code. See |
Not needed anymore IMO :) |
example PRs that were needed despite being breaking changes, demonstrating that the "no breaking change promise" made in 1.0 was broken many times, will continue to be broken, and is untenable in the current state of nim compiler and stdlib maturity level.
change mimedb store stringtable to orderedtable nim-lang/Nim#18065 mimedb
os.
/
trailing slash behaviour nim-lang/Nim#18423Consider proc as a pointer type in options by hlaaftana · Pull Request #13460 · nim-lang/Nim
Fixes classify function to detect subnormal floating points by KeepCoolWithCoolidge · Pull Request #12836 · nim-lang/Nim
Fix sequtils.delete bug with out of bounds indexes by GULPF · Pull Request #12506 · nim-lang/Nim
Make sequtils.zip return seq of anonymous tuples by kaushalmodi · Pull Request #12575 · nim-lang/Nim
splitPath() behavior synchronized with splitFile() by luav · Pull Request #12481 · nim-lang/Nim
[std/re] fix findBounds and find procs nim-lang/Nim#18028 std/re findBounds
unit separator nim-lang/Nim#17730 (unitset in errmsgs broke nim dump; i fixed it)
implement RFCs/294 ; disallow enum <=> enum conversion nim-lang/Nim#16351
system.nim cleanup some exported constants which should never have be… by Araq · Pull Request #17909 · nim-lang/Nim
Remove confusing <//> by xflywind · Pull Request #17830 · nim-lang/Nim
Improve the lists module nim-lang/Nim#17312
fix #17383: json.%,to and jsonutils.formJson,toJson now works with uint|uint64 by timotheecour · Pull Request #17389 · nim-lang/Nim
=> let's deprecate json.%
\r now renders as \r, not \c which was very non-standard by timotheecour · Pull Request #17244 · nim-lang/Nim
Improve uri.parseQuery to never raise an error by mildred · Pull Request #16647 · nim-lang/Nim
fix #8821 by xflywind · Pull Request #15809 · nim-lang/Nim
fix #13432 typetraits.$: $(int,) is now (int,); $tuple[] is now tuple[] nim-lang/Nim#14799
Make the fields of
times.DateTime
private nim-lang/Nim#14197Fix asynchttpserver newline breaking content-length nim-lang/Nim#14565
Undefine
paramCount
¶mStr
in nimscript.nim for *.nims nim-lang/Nim#12860fixes #14001 by Araq · Pull Request #14004 · nim-lang/Nim
fix #11537, correctly parse inline code without surrounding spaces by narimiran · Pull Request #15399 · nim-lang/Nim
rev
abi
field in importc type by timotheecour · Pull Request #17944 · nim-lang/Nimsee also:
hashes for refs should be an opt-in feature by narimiran · Pull Request #18098 · nim-lang/Nim
Revert "fix #14873 properly by skipping
abi
field in importc type" by Araq · Pull Request #17992 · nim-lang/Nimoption optimization by krux02 · Pull Request #6253 · nim-lang/Nim
Fix buffer-overrun bug in net by shirleyquirk · Pull Request #17728 · nim-lang/Nim
Deprecate any by juancarlospaco · Pull Request #16920 · nim-lang/Nim
Great, so if there's a bug (performance, logic, etc) in
hash
, we just need to deprecatehash
and introducehash2
orstd/hashes2
which produces different runtime values to avoid collisions. Since we can't silently change behavior of tables in stdlib by using the new std/hashes because someone might depend on old behavior tied to the old hash, we need to introduce std/tables2, std/sets2, and in turn std/json2 since it depends ontables
, and transitively every module needs to be duplicated. Any client of any of those dependencies will have to be updated to use the new modules and in the process cut support for prior nim versions, creating a mess of incompatible duplicate modules that need to be maintained and break nimble ecosystem beyond repair.This problem is pervasive, with your logic we have to deprecate and find a new symbol name for sugar.
=>
, os./
, we have to deprecate std/json, std/macrosI also recommend you should avoid
std/[json, tables, strutils, sequtils, os, macros]
and indeed, just about any stdlib module because of the same cowboy attitude which views bugs as things that should be fixed, not worked around, if nim is to be taken seriously.nim 1.0 release made a promise to offer stability guarantee (with an exception for "security vulnerability" and experimental features to a good approximation); I was against making that promise because the immaturity of the language and standard library would require breaking that promise in many occasions in order to allow evolving the language and free stdlib from design bugs. The reality is that the stability guarantee has been broken on many occasions, for good reasons (unrelated to security or experimental features or modules).
Here's a tiny sample of silently changed runtime behavior (aka what your call "cowboy attitude") that would require introducing duplicate modules, renaming
$
,/
,=>
etc:and what good does it do when you have no control over it and your dependencies generate thousands of warnings due to this policy which would cause most of stdlib APIs/modules to be deprecated?
The fallacy here is because of transitive dependencies, anything can be considered a "security related issue". Mission critical projects should have proper tests in place when updating dependencies including upgrading to a new compiler release.
The text was updated successfully, but these errors were encountered: