Skip to content
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

Various std net improvements #19132

Merged
merged 6 commits into from
Dec 12, 2021
Merged

Conversation

elcritch
Copy link
Contributor

Expanding the std/net API for a few embedded use cases where calling getAddrInfo repeatedly becomes expensive (and DNS often isn't even enabled). However, it's also nice to be able to send a UDP packet directly to an IpAddress in regular environments when you know the IP upfront (e.g. multicast). Also included is a couple of tweaks to inet_ntop and inet_pton to extend their types, but in a backwards compatible way.

One alteration to the extended API's could be to use an openArray of IpAddress's to allow binding to the first workable IP. Though that seems easy enough to implement oneself.

I'll be testing these manually a bit more, but have included tests and tried them out briefly and they don't error out.

lib/pure/net.nim Outdated Show resolved Hide resolved
@elcritch
Copy link
Contributor Author

elcritch commented Nov 16, 2021

I'm not sure I like how many new proc this approach requires. However, I get failures on embedded devices from sendTo and recvFrom using the current procs since the getAddrInfo fails. I've had that on both ESP/FreeRTOS and Zephyr.

@Araq would optional arguments (say resolveNames=false) be possible / non-breaking?

@Araq
Copy link
Member

Araq commented Nov 17, 2021

@Araq would optional arguments (say resolveNames=false) be possible / non-breaking?

Yes, but maybe the better idea here is an embedded_networking module/package? What would the overlap be with the existing net.nim? How much of it is actually usable as it is?

@elcritch
Copy link
Contributor Author

Yes, but maybe the better idea here is an embedded_networking module/package? What would the overlap be with the existing net.nim?

It's crossed my mind a few times recently. There's a few other little structural changes that might be nice to make but aren't possible with std/net.

Though, I was thinking of calling it something like litenet.nim or something. There's cases where regular x86 code might prefer not calling into the getAddrInfo and the name lookup overhead. Perhaps games using UDP packets, etc. On regular PCs it's pretty small overhead, but still overhead.

Could something like that live in std or fushion?

How much of it is actually usable as it is?

Actually quite a bit of it is usable. Especially with TCP, but I've not really tried SSL but I suspect it might work with fiddling.

UDP seems a little trickier because of both the extra overhead of parsing the host string on every call. Using recvFrom results in an OSError because it calls getAddrString which seems to try to do a DNS lookup. I think ESP/FreeRTOS had a similar issue. You can use inet_pton instead which is what I set nativenet/accept to do.

@elcritch
Copy link
Contributor Author

Really for now, it would probably be sufficient to just add recvFrom / sendTo variants with an IpAddress variant as well. Or perhaps a nativenet version that takes SockAddr/SockLen but still does all the nice string buffer handling.

Copy link
Contributor

@dom96 dom96 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While reviewing this I got a thought: couldn't the recvFrom/connect procs instead detect that the string is an IP address and skip the domain resolution? if this is trivial then we should do it this way.

I think if we do this we can still allow IpAddress to be passed, but maybe this can be done with a generic: proc recvForm[T: IpAddress | string](..., address: var T, ...) to reduce code duplication?

lib/pure/net.nim Outdated
Comment on lines 71 to 72
let bytes = socket.sendTo("192.168.0.1", Port(27960), "status\n")
echo("sent: ", bytes)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let bytes = socket.sendTo("192.168.0.1", Port(27960), "status\n")
echo("sent: ", bytes)
doAssert socket.sendTo("192.168.0.1", Port(27960), "status\c\l") == 8

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While reviewing this I got a thought: couldn't the recvFrom/connect procs instead detect that the string is an IP address and skip the domain resolution? if this is trivial then we should do it this way.

It crossed my mind too, but for IPv4 it can be a bit difficult to tell if it's an IP address or just a weird domain.

I think if we do this we can still allow IpAddress to be passed, but maybe this can be done with a generic: proc recvForm[T: IpAddress | string](..., address: var T, ...) to reduce code duplication?

This was more of my first approach, and I think it's likely better. It's tricky for a couple of the proc's but doable. I wasn't sure if the generic was frowned up in the standard library. The help docs were easier then to say "will parse hostname, or if an IpAddress will use it directly".

lib/pure/net.nim Outdated Show resolved Hide resolved
lib/pure/net.nim Outdated Show resolved Hide resolved
lib/pure/net.nim Outdated Show resolved Hide resolved
lib/pure/net.nim Outdated Show resolved Hide resolved
@dom96
Copy link
Contributor

dom96 commented Nov 19, 2021

btw why does ESP/FreeRTOS have issues with getAddrInfo for you? I don't recall having trouble resolving domains on my ESP32.

@elcritch
Copy link
Contributor Author

btw why does ESP/FreeRTOS have issues with getAddrInfo for you? I don't recall having trouble resolving domains on my ESP32.

It depends partly on the configuration. I generally disable DNS service. The esp/freertos may have been fine with getAddrInfo itself (where zephyr returns an os error presumably since I have dns off).

On the esp/freertos I got errors with UDP sendTo/recvFrom, but only after 20-30 minutes of runtime. It seemed to be due to malloc/free's that occur with getAddrInfo. Calling it once and caching and manually calling the posix sendto/recvfrom's resolved the issue. I got lots of vague and hard to track down issues with esp-lib's malloc.

@Araq
Copy link
Member

Araq commented Nov 20, 2021

Nit: just use one arg separator style

Actually I prefer the semicolon variant, it's slightly easier to read.

@dom96
Copy link
Contributor

dom96 commented Nov 20, 2021

Actually I prefer the semicolon variant, it's slightly easier to read.

I don't really like it. It only ever makes sense for a very specific case: when you have many generic parameters. In this case you don't have them so really don't see how it makes anything more readable.

@elcritch
Copy link
Contributor Author

Ok I incorporated the above changes. I removed the changes to connect and acceptAddr after figuring out that you can skip DNS resolution using AI_NUMERICHOST in the flags. For TCP connections this seems sufficient.

That leaves recvFrom / sendTo as the major changes. It's still useful to have proc's that don't call getAddrInfo at all since it's overhead on every UDP packet. It also leads to memory corruption issues on some versions of esp-idf.

I changed recvFrom to use template version and used the comma arg separators.

lib/pure/net.nim Outdated Show resolved Hide resolved
lib/pure/net.nim Outdated
var sa: Sockaddr_storage
var sl: Socklen
toSockAddr(address, port, sa, sl)
let datasz = min(size, data.len())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should throw instead if the requested size is too large. Or maybe even better just call setLen on data instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I should just remove the size: int argument, it's not on the other sendTo string variant. Likely I got it mixed in by copying from the raw pointer sendTo.

@Araq
Copy link
Member

Araq commented Nov 24, 2021

The test failure seems relevant?

tests\stdlib\tnet_ll.nim
2021-11-24T06:25:12.2812025Z
2021-11-24T06:25:12.2812650Z [Suite] inet_ntop tests
2021-11-24T06:25:12.2816441Z D:\a\1\s\tests\stdlib\tnet_ll.nim(30, 15): Check failed: res == "19.18.17.16"
2021-11-24T06:25:12.2818516Z res was 19.0.0.0
2021-11-24T06:25:12.2819420Z [FAILED] IP V4

@elcritch
Copy link
Contributor Author

elcritch commented Dec 1, 2021

tests\stdlib\tnet_ll.nim

Yes, I thought I'd fixed it but it's failing somewhere. Its dealing with hard-coded IP addresses, so I should be able to fix it up. It might make sense to add a test for the Port endianness in the same location.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len
@elcritch
Copy link
Contributor Author

elcritch commented Dec 1, 2021

@Araq @dom96 it looks like there's an issue with Azure pipelines. It seems to be affecting other PR's as well. Is there something we can do to get them running again?

@Araq
Copy link
Member

Araq commented Dec 1, 2021

The CIs are broken, we know, MS is working on it, there is nothing we can do, unfortunately. PRs will be merged after the CIs got fixed.

@ringabout
Copy link
Member

The CIs are broken, we know, MS is working on it, there is nothing we can do, unfortunately. PRs will be merged after the CIs got fixed.

Is it a known issue tracked somewhere (a link will be appreciated)? Maybe we can try merge some harmless tiny PRs to see whether it helps.

@PMunch
Copy link
Contributor

PMunch commented Dec 3, 2021

https://stackoverflow.com/questions/68033977/errorno-hosted-parallelism-has-been-purchased-or-granted

According to that this is a policy change and we need to submit a request? Or am I missing something?

@ringabout
Copy link
Member

ringabout commented Dec 3, 2021

According to that this is a policy change and we need to submit a request? Or am I missing something?

It seems to work now, you can try to close/reopen your PR or restart azure pipelines for your PR according to the contributing guide.

@narimiran
Copy link
Member

narimiran commented Dec 3, 2021

we need to submit a request?

I did exactly that couple of days ago, and today they replied and gave us (back) parallel builds.

@ringabout ringabout closed this Dec 4, 2021
@ringabout ringabout reopened this Dec 4, 2021
@dom96
Copy link
Contributor

dom96 commented Dec 4, 2021

tslow_tables.nim timed out. Re-running.

@elcritch
Copy link
Contributor Author

elcritch commented Dec 4, 2021

tslow_tables.nim timed out. Re-running.

Thanks, it seems there's (still) an issue on some of the WIndows build. It looks like it's only copying the first byte, which doesn't make sense.

@elcritch
Copy link
Contributor Author

elcritch commented Dec 6, 2021

Doing print-debugging since I don't have a Windows dev env setup. Here's a printout of various tests to figure out why InAddr isn't being properly initialized on the Windows amd64_batch2_3.

Nim code:

  test "IP V4":
    # regular
    var ip4 = InAddr(s_addr: 0x10111213'u32)
    # direct assign
    var ip4v2: InAddr
    ip4v2.s_addr = 0x10111213'u32
    # pointer cast
    var ip4v3 = InAddr()
    var ip4v3_ptr = cast[ptr uint32](ip4v3.addr)
    ip4v3_ptr[] = 0x10111213'u32
    # pointer as inaddr
    var ip4v4_num = 0x10111213'u32
    var ip4v4: ptr InAddr = cast[ptr InAddr](ip4v4_num.addr())

    var buff: array[0..255, char]
    let r = inet_ntop(AF_INET, cast[pointer](ip4.s_addr.addr), buff[0].addr, buff.len.int32)
    let res = if r == nil: "" else: $r
    when defined(windows):
      echo("WINDOWS inet_ntop: ip4: " & repr(ip4))
      echo("WINDOWS inet_ntop: ip4.s_addr.sizeof: " & $(ip4.s_addr.sizeof()))
      echo("WINDOWS inet_ntop: ip4:s_addr: " & repr(ip4.s_addr))
      echo("WINDOWS inet_ntop: ip4.s_addr == 0x10111213'u32: " & $(ip4.s_addr == 0x10111213'u32))
      echo("WINDOWS inet_ntop: ip4:ptr: " & repr(cast[ptr array[0..3, uint8]](ip4.s_addr.addr)))
      echo("WINDOWS inet_ntop: ip4v2:s_addr: " & repr(ip4v2.s_addr))
      echo("WINDOWS inet_ntop: ip4v2.s_addr == 0x10111213'u32: " & $(ip4v2.s_addr == 0x10111213'u32))
      echo("WINDOWS inet_ntop: ip4v3:s_addr: " & repr(ip4v3.s_addr))
      echo("WINDOWS inet_ntop: ip4v3.s_addr == 0x10111213'u32: " & $(ip4v3.s_addr == 0x10111213'u32))
      echo("WINDOWS inet_ntop: ip4v4:s_addr: " & repr(ip4v4.s_addr))
      echo("WINDOWS inet_ntop: ip4v4.s_addr == 0x10111213'u32: " & $(ip4v4.s_addr == 0x10111213'u32))
      echo("WINDOWS inet_ntop: buff:len: " & $(buff.len))
      echo("WINDOWS inet_ntop: buff: " & repr(buff))
      echo("WINDOWS inet_ntop: r: " & repr(r))
      echo("WINDOWS inet_ntop: res: " & repr(res))
    check: res == "19.18.17.16"
      

The winlean.nim implementation of InAddr is:

  InAddr* {.importc: "IN_ADDR", header: "winsock2.h".} = object
    s_addr*: uint32  # IP address
2021-12-06T21:15:12.7099947Z [Suite] inet_ntop tests
2021-12-06T21:15:12.7102438Z WINDOWS inet_ntop: ip4: []
2021-12-06T21:15:12.7103475Z WINDOWS inet_ntop: ip4.s_addr.sizeof: 4
2021-12-06T21:15:12.7104703Z WINDOWS inet_ntop: ip4:s_addr: 19
2021-12-06T21:15:12.7105747Z WINDOWS inet_ntop: ip4.s_addr == 0x10111213'u32: false
2021-12-06T21:15:12.7106792Z WINDOWS inet_ntop: ip4:ptr: ptr 00007ff7c47a5504 --> [19, 0, 0, 0]
2021-12-06T21:15:12.7107903Z WINDOWS inet_ntop: ip4v2:s_addr: 269554195
2021-12-06T21:15:12.7108988Z WINDOWS inet_ntop: ip4v2.s_addr == 0x10111213'u32: true
2021-12-06T21:15:12.7110017Z WINDOWS inet_ntop: ip4v3:s_addr: 269554195
2021-12-06T21:15:12.7112551Z WINDOWS inet_ntop: ip4v3.s_addr == 0x10111213'u32: true
2021-12-06T21:15:12.7114015Z WINDOWS inet_ntop: ip4v4:s_addr: 269554195
2021-12-06T21:15:12.7115121Z WINDOWS inet_ntop: ip4v4.s_addr == 0x10111213'u32: true
2021-12-06T21:15:12.7116034Z WINDOWS inet_ntop: buff:len: 256
2021-12-06T21:15:12.7123459Z WINDOWS inet_ntop: buff: ['1', '9', '.', '0', '.', '0', '.', '0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0']
2021-12-06T21:15:12.7131058Z WINDOWS inet_ntop: r: 00007ff7c4868500"19.0.0.0"
2021-12-06T21:15:12.7133665Z WINDOWS inet_ntop: res: 0000023d978de360"19.0.0.0"
2021-12-06T21:15:12.7134748Z     D:\a\1\s\tests\stdlib\tnet_ll.nim(58, 15): Check failed: res == "19.18.17.16"
2021-12-06T21:15:12.7135897Z     res was 19.0.0.0
2021-12-06T21:15:12.7136813Z   [FAILED] IP V4

It appears that doing: ip4v2.s_addr = 0x10111213'u32 works properly but var ip4 = InAddr(s_addr: 0x10111213'u32) does not. Could this be a compiler error? For now I'm just going to try and use the manual assignment to get this PR working.

@elcritch
Copy link
Contributor Author

elcritch commented Dec 6, 2021

Or perhaps more likely reason for the windows issue, should winlean be using {.bycopy.} on the winsock2.h objects?

@Araq
Copy link
Member

Araq commented Dec 7, 2021

.bycopy shouldn't make a difference. And the CI is green now, what happened?

@dom96
Copy link
Contributor

dom96 commented Dec 7, 2021

And the CI is green now, what happened?

The change to manual assignment fixed it I guess

@elcritch
Copy link
Contributor Author

elcritch commented Dec 8, 2021

And the CI is green now, what happened?

The change to manual assignment fixed it I guess

Yes, that was what fixed it. Not clear why the regular constructor doesn't work, but it matches the debug logging output.

@elcritch
Copy link
Contributor Author

Filed a bug for the Windows constructor issue here #19244.

Is there anything else to do before this could be merged?

@dom96
Copy link
Contributor

dom96 commented Dec 12, 2021

Let's get it in :)

@dom96 dom96 merged commit 4b5cecd into nim-lang:devel Dec 12, 2021
Clyybber pushed a commit to Clyybber/Nim that referenced this pull request Feb 25, 2022
Concerns these changes:
nim-lang/Nim@727c637...340b5a1

Excluded changes are:
nim-lang#18963
nim-lang#19003
nim-lang#19043
nim-lang#19055
nim-lang#19053
nim-lang#19064
nim-lang#18642
nim-lang#19062
nim-lang#19082
nim-lang#19090
nim-lang#19077
nim-lang#19021
nim-lang#19100
nim-lang#19102
nim-lang#19111
nim-lang#19115
nim-lang#19133
nim-lang#19142
nim-lang#19158
nim-lang#19129
nim-lang#19137
nim-lang#19168
nim-lang#19156
nim-lang#19147
nim-lang#19180
nim-lang#19183
nim-lang#19182
nim-lang#19187
nim-lang#19179
nim-lang#19209
nim-lang#19210
nim-lang#19207
nim-lang#19219
nim-lang#19195
nim-lang#19212
nim-lang#19134
nim-lang#19235
nim-lang#19252
nim-lang#19196
nim-lang#19295
nim-lang#19301
nim-lang#19181
nim-lang#17223
nim-lang#19370
nim-lang#19385
nim-lang#19307
nim-lang#19394
nim-lang#19399
nim-lang#19390
nim-lang#19407
nim-lang#19419
nim-lang#19421
nim-lang#19363
nim-lang#19406
nim-lang#19431
nim-lang#19455
nim-lang#19461
nim-lang@cb894c7
nim-lang#19462
nim-lang#19442
nim-lang#19437
nim-lang#19433
nim-lang#19512
nim-lang#19487
nim-lang#19543

Excluded changes include major changes which require more consideration
and changes which don't apply to the current code anymore but could be
worth porting over still.

Excluded changes which only change the identifier casing in tests
or only concern code removed in nimskull aren't listed.

Begin commit listing:

use two underscores for easy demangling [backport:1.6] (nim-lang#19028)

Add Elbrus 2000 architecture (nim-lang#19024)

* Add Elbrus 2000 architecture

* Add e2k to niminst

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove exception (nim-lang#18906)

allow converting static vars to `openArray` (nim-lang#19035)

When assigning constant output to a seq, and then passing that static
seq to other functions that take `openArray`, the compiler may end up
producing errors, as it does not know how to convert `static[seq[T]]`
to `openArray[T]`. By ignoring the `static` wrapper on the type for
the purpose of determining data memory location and length, this gets
resolved cleanly. Unfortunately, it is relatively tricky to come up
with a minimal example, as there are followup problems from the failing
conversion, e.g., this may lead to `internal error: inconsistent
environment type`, instead of the relevant `openArrayLoc` error message.

use the correct header for TIOCGWINSZ on Solaris (nim-lang#19037)

Minor update to terminal docs (nim-lang#19056)

* Update terminal.nim

- Added some extra docs to cursorUp/Down/Forward/Backward
- I was able to use hideCursor and showCursor without adding stdout, removed the parameter
- Added docs to terminalHeight()* and terminalWidth()*

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Added back f: file to cursor movement

* Removed unnecessary comments

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fix a tiny formating issue in doc/destructors.rst (nim-lang#19058)

fix a tiny code snippet formatting issue in `doc/constructors.rst`, again (nim-lang#19065)

Fix nimIdentNormalize, fixes nim-lang#19067 (nim-lang#19068)

* Make nimIdentNormalize return "" when passed ""; fixes nim-lang#19067

Fixes nim-lang#19067

* Add tests for nimIdentNormalize

fix nim-lang#18971 (nim-lang#19070) [backport:1.6]

since the example code return value from global variable, instead
of first argument, the `n.len` is 1 which causes compiler crashes.

fixes nim-lang#19000 (nim-lang#19032)

* fixes nim-lang#19000

* progress

fix nim-lang#18410 (Errors initializing an object of RootObj with the C++ backend) [backport] (nim-lang#18836)

* fix nim-lang#18410

* one line comment

* typo

* typo

* cover cpp

update numbers of lifetime-tracking hooks in doc/destructors.rst (nim-lang#19088)

bootstrapping Nim compiler with `cpp --gc:orc` (nim-lang#19087)

libs/impore/re: Add note about the requirement of `matches` to be pre-allocated (nim-lang#19081)

Add few runnableExamples for `findBounds` for clarity.

Fixes nim-lang#18775

Add test for issue 15435 (nim-lang#19079)

* Add test for issue 15435

Closes nim-lang#15435.

* Specify bug # in comment

Addresses nim-lang#19079 (comment)

manual: Document the use of `static` as a proc call (nim-lang#19084)

* manual: Document the use of `static` as a proc call

Also adds tests.

Fixes nim-lang#16987 .

* Update doc/manual.rst

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

* manual: Undocument usage of foo.static

foo.static and foo.static() are not expected to work.

Ref: https://github.com/nim-lang/Nim/pull/19084/files#r741203578

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

manual: Document that comma propagates the default values of parameters (nim-lang#19080)

* manual: Document that comma propagates the default values of parameters

Fixes nim-lang#15949.

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

fixes nim-lang#19011 [backport:1.6] (nim-lang#19114)

Add deprecation pragmas in lib/deprecated/pure (nim-lang#19113)

Deprecate `std/sharedlist` and `std/sharedtables` (nim-lang#19112)

fix nimindexterm in rst2tex/doc2tex [backport] (nim-lang#19106)

* fix nimindexterm (rst2tex/doc2tex) [backport]

* Add support for indexing in rst

Call {.cursor.} a pragma. (nim-lang#19116)

* Call {.cursor.} a pragma.

Its hard to find .curser annotation while googling because all other things like it are called pragmas. See https://nim-lang.org/docs/manual.html#pragmas
Also the . in front of the name makes it hard to find and search for.

Can we just call it cursor pragma?

* Small fix for comment.

Remove tlsEmulation enabled from Windows + GCC config (nim-lang#19119) [backport:1.6]

This flag has a very significant performance impact on programs compiled with --threads:on. It is also apparently not needed anymore for standard circumstances. Can we remove the config? See nim-lang#18146 (comment) for discussion and perf impact. [backport:1.6]

Add security tip for setCookie (nim-lang#19117)

* Add security tip for setCookie

* Update lib/pure/cookies.nim

Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

* Update lib/pure/cookies.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>
Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

correct cookie docs (nim-lang#19122)

refactoring: orc can use getThreadId() (nim-lang#19123)

* refactoring: orc can use getThreadId()

* progress

fixed colorNames sorting mistake (nim-lang#19125) [backport]

update manual (nim-lang#19130) [backport]

Merge file size fields correctly on Windows (nim-lang#19141)

* Merge file size fields correctly on Windows

Merge file size fields correctly on Windows

- Merge the two 32-bit file size fields from `BY_HANDLE_FILE_INFORMATION` correctly in `rawToFormalFileInfo`.
- Fixes nim-lang#19135

* Update os.nim

Fix punycode.decode function (nim-lang#19136)

* Refactor: rename proc to func

* Fix punycode.decode function

This function could only properly decode punycodes containing a single
encoded unicode character. As soon as there was more than one punycode
character group to decode it produced invalid output - the number of
characters was correct, but their position was not.

* Update tpunycode.nim

Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>

Fix undeclared 'SYS_getrandom' on emscripten (nim-lang#19144)

wrong spaces (3 => 2) (nim-lang#19145)

`caseStmtMacros` no longer experimental, experimental manual refactor (nim-lang#19173)

* `caseStmtMacros` no longer experimental, experimental manual refactor

* Update doc/manual.rst

* apply review suggestions

* apply review

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix inline syntax highlighting in system.nim (nim-lang#19184)

swap port to correct port order (nim-lang#19177)

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

feat: TLS-ALPN wrappers for OpenSSL (nim-lang#19202)

Co-authored-by: Iced Quinn <icedquinn@iceworks.cc>

misc bugfixes [backport:1.2] (nim-lang#19203)

treat do with pragmas but no parens as proc (nim-lang#19191)

fixes nim-lang#19188

[format minor] remove unnecessary spaces (nim-lang#19216)

Making TCC work again on Windows --cpu:amd64 - fix nim-lang#16326 (nim-lang#19221)

* fix nim-lang#16326

* removing comments

fixes a converter handling regression that caused private converters to leak into client modules; fixes nim-lang#19213; [backport:1.6] (nim-lang#19229)

Add support for LoongArch (nim-lang#19223)

* Add support for LoongArch

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove `std/sharedstrings` (nim-lang#19228)

* remove std/sharedstrings

it has been broken since 0.18.0

* rephrase the changelog entry

add comments to spawn and pinnedSpawn (nim-lang#19230)

`spawn` uses `nimSpawn3` internally and `pinnedSpawn` uses `nimSpawn4` internally. I comment it in order to help contributors get the gist of its functionality.

fixes an old ARC bug: the produced copy/sink operations don't copy the hidden type field for objects with enabled inheritance; fixes nim-lang#19205 [backport:1.6] (nim-lang#19232)

nimRawSetjmp: support Windows (nim-lang#19197)

* nimRawSetjmp: support Windows

Using `_setjmp()` directly is required to avoid some rare (but very
annoying) exception-related stack corruption leading to segfaults on
Windows, with Mingw-w64 and SEH.
More details: status-im/nimbus-eth2#3121

Also add "nimBuiltinSetjmp" - mostly for benchmarking.

* fix for Apple's Clang++

Revert "swap port to correct port order (nim-lang#19177)" (nim-lang#19234)

This reverts commit 0d0c249.

move toDeque to after addLast (nim-lang#19233) [backport:1.0]

Changes the order of procs definitions in order to avoid calling an undefined proc.

let Nim support Nimble 0.14 with lock-file support [backport:1.6] (nim-lang#19236)

nimc.rst: fix table markup (nim-lang#19239)

Various std net improvements (nim-lang#19132)

* Variant of  that works with raw IpAddresses.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len

* fix test failing - byte len

* debugging odd windows build failure

* debugging odd windows build failure

* more experiments to figure out the windows failure

* try manual assigment on InAddr

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

fix bug nim-lang#14468 zero-width split (nim-lang#19248)

basicopt.txt: Unify the format (nim-lang#19251)

fix: fixes bug in CVerifyPeerUseEnvVars (nim-lang#19247)

Previously CVerifyPeerUseEnvVars was not being passed into
scanSslCertificates, which meant that we weren't scanning
additional certificate locations given via the SSL_CERT_FILE and
SSL_CERT_DIR environment variables

suggestion to respect typedarray type (nim-lang#19257)

* suggestion to respect typedarray

* Update jssys.nim

Co-authored-by: Sven Keller <s.keller@cortona.de>

fix nim-lang#19244 - solves the problem of the InAddr object constructor in Windows. (nim-lang#19259)

* Update winlean.nim

* Update tnet_ll.nim

Fixed typo in manual.rst unsafeAssign->uncheckedAssign. Fixes part 1 of nim-lang#19266 (nim-lang#19267)

use uppercase "type" for Proxy-Authorization header (nim-lang#19273)

Some servers will reject authorization requests with a lowercase "basic" type. Changing to "Basic" seems to solve these issues.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization

Update colors.nim (nim-lang#19274)

* Update colors.nim

Added `lightgray` alias to `lightgrey` and `...grey`aliases for the rest of the gray colors.
Added color `rebeccapurple`.
Fixed the incorrect values for the `PaleVioletRed` and `MediumPurple` colors.
This module should now be matching the CSS colors.
I used the seq[tuple] syntax for defining the names.

* Document colors changes.

Extract runnables that specify `doccmd` (nim-lang#19275) [backport:1.6]

Fix build on FreeBSD/powerpc (nim-lang#19282)

It's currently misdetected as powerpc64.

Fix nim-lang#19107 (nim-lang#19286) [backport]

fixes grammar typos [backport] (nim-lang#19289)

fix 19292 (nim-lang#19293)

Fix nim-lang#19297 - fixing broken list after adding empty list (nim-lang#19299)

* Update lists.nim

* Update tlists.nim

* removed check `if b.tail != nil`

The tail of the list being null it is still possible to retrieve its end by going through all nodes from the head. So checking for null from `b.tail` is unnecessary. However, setting `a.tail = b.tail` only if `a.head != nil`, so you don't break a good list with an already broken one.

fixes nim-lang#16617 [backport] (nim-lang#19300)

Update JS and nimscript import tests (nim-lang#19306)

* add new modules, except experimental ones
* remove deprecated modules mersenne and sharedlist
* better describe why some modules fail and some modules don't

add compile time option for POSIX sigwait on Illumos/Solaris (nim-lang#19296)

* add compile time option for POSIX sigwait on Illumos/Solaris

* fix link to documentation of `sigwait` on Illumos/Solaris

[docs] clarify the raised exception (nim-lang#19308)

* [docs] clarify the raised exception

Lest developers wanna know what the exception is.

* Apply suggestions from @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

docs: Fix typo in tut1.rst (nim-lang#19309)

Fix nim-lang#19314 - fixing broken `DoublyLinkedList` after adding empty `DoublyLinkedList` (nim-lang#19315) [backport]

* Update lists.nim

* Update tlists.nim

fixed typos (nim-lang#19316)

devel: style fix (nim-lang#19318)

this allows "--styleCheck:usages --styleCheck:error"

docs: Fix typo in tut1.rst (nim-lang#19324)

correct the comments (nim-lang#19322)

--expandArc

```
var
  a
  b
a = matrix(5, 5, 1.0)
b = matrix(5, 5, 2.0)
`=sink`(b, -
  let blitTmp = b
  wasMoved(b)
  blitTmp +
    a)
`=destroy`(b)
`=destroy`(a)
```

add std/private/win_getsysteminfo; refactor the usage of `GetSystemInfo` (nim-lang#19310)

* add std/private/win_getsysteminfo

* import at the top level

* wrappers follow nep1 too

* follow review comment

Update net.nim (nim-lang#19327) [backport]

Fix nim-lang#19038 - making the Nim compiler work again on Windows XP (nim-lang#19331)

* Update osenv.nim

* Update win_setenv.nim

* Update lib/pure/includes/osenv.nim

* Update lib/pure/includes/osenv.nim

* fixing cstring

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix nim-lang#19343 (nim-lang#19344) [backport]

Ensure HttpClient onProgress is called once per second
Ensure that reported speed is accurate

stylecheck usages part two: stdlib cleanup (nim-lang#19338)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

added filemode docs (nim-lang#19346)

Fix `remove` on last node of singly-linked list [backport:1.6] (nim-lang#19353)

fix stylecheck error with asyncdispatch (nim-lang#19350)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

* fix stylecheck error with asyncdispatch

it is a partial regression since nim-lang#12842

* add tests

* don't use echo in tests

remove spaces between an identifier and a star (nim-lang#19355)

It makes search easier by searching `+`* instead of `+` which filter lots of unexported versions.

Follow nim-lang#18681

bitsets.nim: cleanup (nim-lang#19361)

make rst thread safe (nim-lang#19369)

split for the convenience of review

docs: Mention `import foo {.all.}` syntax (nim-lang#19377)

Mention the `import foo {.all.}` syntax in the manual,
with a caveat about private imports.
Also link to the experimental importutils module.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

update copyright year (nim-lang#19381)

docs: Fix broken cross references to `rfind` in strutils (nim-lang#19382) [backport]

Fixes three broken cross references to `rfind` in strutils.
Breakage due to signature changes of the `rfind` methods.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

move type operation section and remove deepcopy document (nim-lang#19389)

ref nim-lang#19173; because deepcopy is not fit for ORC/ARC which was used for spawn and spawn will be removed from compiler

deprecate unsafeAddr; extend addr (nim-lang#19373)

* deprecate unsafeAddr; extend addr

addr is now available for all addressable locations, unsafeAddr is deprecated and become an alias for addr

* follow @Vindaar's advice

* change the signature of addr

* unsafeAddr => addr (stdlib)

* Update changelog.md

* unsafeAddr => addr (tests)

* Revert "unsafeAddr => addr (stdlib)"

This reverts commit ab83c99.

* doc changes; thanks to @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

improve changelog a bit (nim-lang#19400)

mangle names in nimbase.h using cppDefine (nim-lang#19395) [backport]

mangle names in nimbase.h
fix comments

Optimize lent in JS [backport:1.6] (nim-lang#19393)

* Optimize lent in JS [backport:1.6]

* addr on lent doesn't work anymore, don't use it

* use unsafeAddr  in test again for older versions

update deprecated example (nim-lang#19415)

`toNimIdent` proc is deprecated, so I replaced it with `ident` proc

Improve Zshell completion (nim-lang#19354)

fix stricteffects (nimsuggest/sexp) (nim-lang#19405)

* fix stricteffects (nimsuggest/sexp)

* Update tstrict_effects3.nim

* Update tests/effects/tstrict_effects3.nim

suppress deprecated warnings (nim-lang#19408)

* suppress deprecated warnings

once bump version to 1.7.3 enable deprecated messages

* deprecate later

add an example to setControlCHook (nim-lang#19416)

* add an example to setControlCHook

* [skip CI] format example for setControlCHook

Co-authored-by: Nathan Blaxall <nathan.blaxall@actionstep.com>

fix term rewriting with sideeffect (nim-lang#19410)

* fix term rewriting with sideeffect

fix nim-lang#6217

* add tests

* Update tests/template/template_various.nim

Resolve cross file resolution errors in atomics (nim-lang#19422) [backport:1.6]

* Resolve call undeclared routine testAndSet

* Fix undeclared field atomicType

Fix nim-lang#11923 (nim-lang#19427)

* Apply commit nim-lang@5da931f that was never merged (was part of a bigger PR). Should fix issue nim-lang#11932

* add a generic object for custom pragma

os: faster getFileSize (nim-lang#19438)

Use "stat" rather than "open", "seek", and "close" system calls.
The Windows implementation remains the same.

bugfix: varargs count as open arrays (nim-lang#19447)

update outdated link (nim-lang#19465)

Ref nim-lang#19463

Update jsfetch with latest API and fix missing bindings (nim-lang#19473)

* Update with latest API and fix missing bindings

remove deprecated `Body`
remove implicit `cstring` convs
add `Headers` to `FetchOptions`
add `Request` init proc which takes `FetchOptions`

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* remove experimental flag

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

No longer segfault when using a typeclass with a self referencing type (nim-lang#19467)

Clonkk fix2 11923 (nim-lang#19451)

* fix nnkBracketExpr not compiling for getImpl on customPragmaNode

* fix test import

* fix alias not working with hasCustomPragmas

fix parseEnum cannot parse enum with const fields (nim-lang#19466)

fix nim-lang#19463

Add compilers and hints to default nim.cfg (nim-lang#18424)

don't use a temp for addr [backport: 1.6] (nim-lang#19503)

* don't use a temp for addr

fix nim-lang#19497

* Update compiler/ccgcalls.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* add a test

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fixes nim-lang#19404 by protecting the memory we borrow from. this replaces crashes with minor memory leaks which seems to be acceptable. In the longer run we need a better VM that didn't grow hacks over a decade. (nim-lang#19515)

Co-authored-by: flywind <xzsflywind@gmail.com>

Remove backslash in glob pattern (nim-lang#19524)

use OrderedTable instead of OrderedTableRef for mimedb (nim-lang#19522)

* use OrderedTable instead of OrderedTableRef for mimedb

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

* added changelog entry for mimedb change

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

Remove Deprecated oids.oidsToString (nim-lang#19519)

* Remove deprecated oids.oidToString

* Remove deprecated oids.oidToString

Remove deprecated math.c_frexp (nim-lang#19518)

* Remove Deprecated math proc

* Remove Deprecated math proc

* Remove Deprecated math proc

[testcase] genSym fails to make unique identifier for ref object types (nim-lang#19506)

close nim-lang#15118

Documentation: Fix word usage (nim-lang#19529)

Update chcks.nim (nim-lang#19540)

keep casing of noinit and noreturn pragmas consistently documented (nim-lang#19535)

compile pragma: cache the result sooner (nim-lang#19554)

extccomp.addExternalFileToCompile() relies on hashes to decide whether
an external C file needs recompilation or not.

Due to short-circuit evaluation of boolean expressions, the procedure
that generates a corresponding hash file is not called the first time an
external file is compiled, so an avoidable recompilation is triggered
the next build.

This patch fixes that by moving the proc call with a desired side
effect from its boolean expression, so it's executed unconditionally.
Clyybber pushed a commit to Clyybber/Nim that referenced this pull request Feb 25, 2022
Concerns these changes:
nim-lang/Nim@727c637...340b5a1

Excluded changes are:
nim-lang#18963
nim-lang#19003
nim-lang#19043
nim-lang#19055
nim-lang#19053
nim-lang#19064
nim-lang#18642
nim-lang#19062
nim-lang#19082
nim-lang#19090
nim-lang#19077
nim-lang#19021
nim-lang#19100
nim-lang#19102
nim-lang#19111
nim-lang#19115
nim-lang#19133
nim-lang#19142
nim-lang#19158
nim-lang#19129
nim-lang#19137
nim-lang#19168
nim-lang#19156
nim-lang#19147
nim-lang#19180
nim-lang#19183
nim-lang#19182
nim-lang#19187
nim-lang#19179
nim-lang#19209
nim-lang#19210
nim-lang#19207
nim-lang#19219
nim-lang#19195
nim-lang#19212
nim-lang#19134
nim-lang#19235
nim-lang#19252
nim-lang#19196
nim-lang#19295
nim-lang#19301
nim-lang#19181
nim-lang#17223
nim-lang#19370
nim-lang#19385
nim-lang#19307
nim-lang#19394
nim-lang#19399
nim-lang#19390
nim-lang#19407
nim-lang#19419
nim-lang#19421
nim-lang#19363
nim-lang#19406
nim-lang#19431
nim-lang#19455
nim-lang#19461
nim-lang@cb894c7
nim-lang#19462
nim-lang#19442
nim-lang#19437
nim-lang#19433
nim-lang#19512
nim-lang#19487
nim-lang#19543

Excluded changes include major changes which require more consideration
and changes which don't apply to the current code anymore but could be
worth porting over still.

Excluded changes which only change the identifier casing in tests
or only concern code removed in nimskull aren't listed.

Begin commit listing:

use two underscores for easy demangling [backport:1.6] (nim-lang#19028)

Add Elbrus 2000 architecture (nim-lang#19024)

* Add Elbrus 2000 architecture

* Add e2k to niminst

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove exception (nim-lang#18906)

allow converting static vars to `openArray` (nim-lang#19035)

When assigning constant output to a seq, and then passing that static
seq to other functions that take `openArray`, the compiler may end up
producing errors, as it does not know how to convert `static[seq[T]]`
to `openArray[T]`. By ignoring the `static` wrapper on the type for
the purpose of determining data memory location and length, this gets
resolved cleanly. Unfortunately, it is relatively tricky to come up
with a minimal example, as there are followup problems from the failing
conversion, e.g., this may lead to `internal error: inconsistent
environment type`, instead of the relevant `openArrayLoc` error message.

use the correct header for TIOCGWINSZ on Solaris (nim-lang#19037)

Minor update to terminal docs (nim-lang#19056)

* Update terminal.nim

- Added some extra docs to cursorUp/Down/Forward/Backward
- I was able to use hideCursor and showCursor without adding stdout, removed the parameter
- Added docs to terminalHeight()* and terminalWidth()*

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Added back f: file to cursor movement

* Removed unnecessary comments

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fix a tiny formating issue in doc/destructors.rst (nim-lang#19058)

fix a tiny code snippet formatting issue in `doc/constructors.rst`, again (nim-lang#19065)

Fix nimIdentNormalize, fixes nim-lang#19067 (nim-lang#19068)

* Make nimIdentNormalize return "" when passed ""; fixes nim-lang#19067

Fixes nim-lang#19067

* Add tests for nimIdentNormalize

fix nim-lang#18971 (nim-lang#19070) [backport:1.6]

since the example code return value from global variable, instead
of first argument, the `n.len` is 1 which causes compiler crashes.

fixes nim-lang#19000 (nim-lang#19032)

* fixes nim-lang#19000

* progress

fix nim-lang#18410 (Errors initializing an object of RootObj with the C++ backend) [backport] (nim-lang#18836)

* fix nim-lang#18410

* one line comment

* typo

* typo

* cover cpp

update numbers of lifetime-tracking hooks in doc/destructors.rst (nim-lang#19088)

bootstrapping Nim compiler with `cpp --gc:orc` (nim-lang#19087)

libs/impore/re: Add note about the requirement of `matches` to be pre-allocated (nim-lang#19081)

Add few runnableExamples for `findBounds` for clarity.

Fixes nim-lang#18775

Add test for issue 15435 (nim-lang#19079)

* Add test for issue 15435

Closes nim-lang#15435.

* Specify bug # in comment

Addresses nim-lang#19079 (comment)

manual: Document the use of `static` as a proc call (nim-lang#19084)

* manual: Document the use of `static` as a proc call

Also adds tests.

Fixes nim-lang#16987 .

* Update doc/manual.rst

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

* manual: Undocument usage of foo.static

foo.static and foo.static() are not expected to work.

Ref: https://github.com/nim-lang/Nim/pull/19084/files#r741203578

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

manual: Document that comma propagates the default values of parameters (nim-lang#19080)

* manual: Document that comma propagates the default values of parameters

Fixes nim-lang#15949.

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

fixes nim-lang#19011 [backport:1.6] (nim-lang#19114)

Add deprecation pragmas in lib/deprecated/pure (nim-lang#19113)

Deprecate `std/sharedlist` and `std/sharedtables` (nim-lang#19112)

fix nimindexterm in rst2tex/doc2tex [backport] (nim-lang#19106)

* fix nimindexterm (rst2tex/doc2tex) [backport]

* Add support for indexing in rst

Call {.cursor.} a pragma. (nim-lang#19116)

* Call {.cursor.} a pragma.

Its hard to find .curser annotation while googling because all other things like it are called pragmas. See https://nim-lang.org/docs/manual.html#pragmas
Also the . in front of the name makes it hard to find and search for.

Can we just call it cursor pragma?

* Small fix for comment.

Remove tlsEmulation enabled from Windows + GCC config (nim-lang#19119) [backport:1.6]

This flag has a very significant performance impact on programs compiled with --threads:on. It is also apparently not needed anymore for standard circumstances. Can we remove the config? See nim-lang#18146 (comment) for discussion and perf impact. [backport:1.6]

Add security tip for setCookie (nim-lang#19117)

* Add security tip for setCookie

* Update lib/pure/cookies.nim

Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

* Update lib/pure/cookies.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>
Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

correct cookie docs (nim-lang#19122)

refactoring: orc can use getThreadId() (nim-lang#19123)

* refactoring: orc can use getThreadId()

* progress

fixed colorNames sorting mistake (nim-lang#19125) [backport]

update manual (nim-lang#19130) [backport]

Merge file size fields correctly on Windows (nim-lang#19141)

* Merge file size fields correctly on Windows

Merge file size fields correctly on Windows

- Merge the two 32-bit file size fields from `BY_HANDLE_FILE_INFORMATION` correctly in `rawToFormalFileInfo`.
- Fixes nim-lang#19135

* Update os.nim

Fix punycode.decode function (nim-lang#19136)

* Refactor: rename proc to func

* Fix punycode.decode function

This function could only properly decode punycodes containing a single
encoded unicode character. As soon as there was more than one punycode
character group to decode it produced invalid output - the number of
characters was correct, but their position was not.

* Update tpunycode.nim

Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>

Fix undeclared 'SYS_getrandom' on emscripten (nim-lang#19144)

wrong spaces (3 => 2) (nim-lang#19145)

`caseStmtMacros` no longer experimental, experimental manual refactor (nim-lang#19173)

* `caseStmtMacros` no longer experimental, experimental manual refactor

* Update doc/manual.rst

* apply review suggestions

* apply review

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix inline syntax highlighting in system.nim (nim-lang#19184)

swap port to correct port order (nim-lang#19177)

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

feat: TLS-ALPN wrappers for OpenSSL (nim-lang#19202)

Co-authored-by: Iced Quinn <icedquinn@iceworks.cc>

misc bugfixes [backport:1.2] (nim-lang#19203)

treat do with pragmas but no parens as proc (nim-lang#19191)

fixes nim-lang#19188

[format minor] remove unnecessary spaces (nim-lang#19216)

Making TCC work again on Windows --cpu:amd64 - fix nim-lang#16326 (nim-lang#19221)

* fix nim-lang#16326

* removing comments

fixes a converter handling regression that caused private converters to leak into client modules; fixes nim-lang#19213; [backport:1.6] (nim-lang#19229)

Add support for LoongArch (nim-lang#19223)

* Add support for LoongArch

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove `std/sharedstrings` (nim-lang#19228)

* remove std/sharedstrings

it has been broken since 0.18.0

* rephrase the changelog entry

add comments to spawn and pinnedSpawn (nim-lang#19230)

`spawn` uses `nimSpawn3` internally and `pinnedSpawn` uses `nimSpawn4` internally. I comment it in order to help contributors get the gist of its functionality.

fixes an old ARC bug: the produced copy/sink operations don't copy the hidden type field for objects with enabled inheritance; fixes nim-lang#19205 [backport:1.6] (nim-lang#19232)

nimRawSetjmp: support Windows (nim-lang#19197)

* nimRawSetjmp: support Windows

Using `_setjmp()` directly is required to avoid some rare (but very
annoying) exception-related stack corruption leading to segfaults on
Windows, with Mingw-w64 and SEH.
More details: status-im/nimbus-eth2#3121

Also add "nimBuiltinSetjmp" - mostly for benchmarking.

* fix for Apple's Clang++

Revert "swap port to correct port order (nim-lang#19177)" (nim-lang#19234)

This reverts commit 0d0c249.

move toDeque to after addLast (nim-lang#19233) [backport:1.0]

Changes the order of procs definitions in order to avoid calling an undefined proc.

let Nim support Nimble 0.14 with lock-file support [backport:1.6] (nim-lang#19236)

nimc.rst: fix table markup (nim-lang#19239)

Various std net improvements (nim-lang#19132)

* Variant of  that works with raw IpAddresses.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len

* fix test failing - byte len

* debugging odd windows build failure

* debugging odd windows build failure

* more experiments to figure out the windows failure

* try manual assigment on InAddr

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

fix bug nim-lang#14468 zero-width split (nim-lang#19248)

basicopt.txt: Unify the format (nim-lang#19251)

fix: fixes bug in CVerifyPeerUseEnvVars (nim-lang#19247)

Previously CVerifyPeerUseEnvVars was not being passed into
scanSslCertificates, which meant that we weren't scanning
additional certificate locations given via the SSL_CERT_FILE and
SSL_CERT_DIR environment variables

suggestion to respect typedarray type (nim-lang#19257)

* suggestion to respect typedarray

* Update jssys.nim

Co-authored-by: Sven Keller <s.keller@cortona.de>

fix nim-lang#19244 - solves the problem of the InAddr object constructor in Windows. (nim-lang#19259)

* Update winlean.nim

* Update tnet_ll.nim

Fixed typo in manual.rst unsafeAssign->uncheckedAssign. Fixes part 1 of nim-lang#19266 (nim-lang#19267)

use uppercase "type" for Proxy-Authorization header (nim-lang#19273)

Some servers will reject authorization requests with a lowercase "basic" type. Changing to "Basic" seems to solve these issues.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization

Update colors.nim (nim-lang#19274)

* Update colors.nim

Added `lightgray` alias to `lightgrey` and `...grey`aliases for the rest of the gray colors.
Added color `rebeccapurple`.
Fixed the incorrect values for the `PaleVioletRed` and `MediumPurple` colors.
This module should now be matching the CSS colors.
I used the seq[tuple] syntax for defining the names.

* Document colors changes.

Extract runnables that specify `doccmd` (nim-lang#19275) [backport:1.6]

Fix build on FreeBSD/powerpc (nim-lang#19282)

It's currently misdetected as powerpc64.

Fix nim-lang#19107 (nim-lang#19286) [backport]

fixes grammar typos [backport] (nim-lang#19289)

fix 19292 (nim-lang#19293)

Fix nim-lang#19297 - fixing broken list after adding empty list (nim-lang#19299)

* Update lists.nim

* Update tlists.nim

* removed check `if b.tail != nil`

The tail of the list being null it is still possible to retrieve its end by going through all nodes from the head. So checking for null from `b.tail` is unnecessary. However, setting `a.tail = b.tail` only if `a.head != nil`, so you don't break a good list with an already broken one.

fixes nim-lang#16617 [backport] (nim-lang#19300)

Update JS and nimscript import tests (nim-lang#19306)

* add new modules, except experimental ones
* remove deprecated modules mersenne and sharedlist
* better describe why some modules fail and some modules don't

add compile time option for POSIX sigwait on Illumos/Solaris (nim-lang#19296)

* add compile time option for POSIX sigwait on Illumos/Solaris

* fix link to documentation of `sigwait` on Illumos/Solaris

[docs] clarify the raised exception (nim-lang#19308)

* [docs] clarify the raised exception

Lest developers wanna know what the exception is.

* Apply suggestions from @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

docs: Fix typo in tut1.rst (nim-lang#19309)

Fix nim-lang#19314 - fixing broken `DoublyLinkedList` after adding empty `DoublyLinkedList` (nim-lang#19315) [backport]

* Update lists.nim

* Update tlists.nim

fixed typos (nim-lang#19316)

devel: style fix (nim-lang#19318)

this allows "--styleCheck:usages --styleCheck:error"

docs: Fix typo in tut1.rst (nim-lang#19324)

correct the comments (nim-lang#19322)

--expandArc

```
var
  a
  b
a = matrix(5, 5, 1.0)
b = matrix(5, 5, 2.0)
`=sink`(b, -
  let blitTmp = b
  wasMoved(b)
  blitTmp +
    a)
`=destroy`(b)
`=destroy`(a)
```

add std/private/win_getsysteminfo; refactor the usage of `GetSystemInfo` (nim-lang#19310)

* add std/private/win_getsysteminfo

* import at the top level

* wrappers follow nep1 too

* follow review comment

Update net.nim (nim-lang#19327) [backport]

Fix nim-lang#19038 - making the Nim compiler work again on Windows XP (nim-lang#19331)

* Update osenv.nim

* Update win_setenv.nim

* Update lib/pure/includes/osenv.nim

* Update lib/pure/includes/osenv.nim

* fixing cstring

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix nim-lang#19343 (nim-lang#19344) [backport]

Ensure HttpClient onProgress is called once per second
Ensure that reported speed is accurate

stylecheck usages part two: stdlib cleanup (nim-lang#19338)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

added filemode docs (nim-lang#19346)

Fix `remove` on last node of singly-linked list [backport:1.6] (nim-lang#19353)

fix stylecheck error with asyncdispatch (nim-lang#19350)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

* fix stylecheck error with asyncdispatch

it is a partial regression since nim-lang#12842

* add tests

* don't use echo in tests

remove spaces between an identifier and a star (nim-lang#19355)

It makes search easier by searching `+`* instead of `+` which filter lots of unexported versions.

Follow nim-lang#18681

bitsets.nim: cleanup (nim-lang#19361)

make rst thread safe (nim-lang#19369)

split for the convenience of review

docs: Mention `import foo {.all.}` syntax (nim-lang#19377)

Mention the `import foo {.all.}` syntax in the manual,
with a caveat about private imports.
Also link to the experimental importutils module.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

update copyright year (nim-lang#19381)

docs: Fix broken cross references to `rfind` in strutils (nim-lang#19382) [backport]

Fixes three broken cross references to `rfind` in strutils.
Breakage due to signature changes of the `rfind` methods.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

move type operation section and remove deepcopy document (nim-lang#19389)

ref nim-lang#19173; because deepcopy is not fit for ORC/ARC which was used for spawn and spawn will be removed from compiler

deprecate unsafeAddr; extend addr (nim-lang#19373)

* deprecate unsafeAddr; extend addr

addr is now available for all addressable locations, unsafeAddr is deprecated and become an alias for addr

* follow @Vindaar's advice

* change the signature of addr

* unsafeAddr => addr (stdlib)

* Update changelog.md

* unsafeAddr => addr (tests)

* Revert "unsafeAddr => addr (stdlib)"

This reverts commit ab83c99.

* doc changes; thanks to @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

improve changelog a bit (nim-lang#19400)

mangle names in nimbase.h using cppDefine (nim-lang#19395) [backport]

mangle names in nimbase.h
fix comments

Optimize lent in JS [backport:1.6] (nim-lang#19393)

* Optimize lent in JS [backport:1.6]

* addr on lent doesn't work anymore, don't use it

* use unsafeAddr  in test again for older versions

update deprecated example (nim-lang#19415)

`toNimIdent` proc is deprecated, so I replaced it with `ident` proc

Improve Zshell completion (nim-lang#19354)

fix stricteffects (nimsuggest/sexp) (nim-lang#19405)

* fix stricteffects (nimsuggest/sexp)

* Update tstrict_effects3.nim

* Update tests/effects/tstrict_effects3.nim

suppress deprecated warnings (nim-lang#19408)

* suppress deprecated warnings

once bump version to 1.7.3 enable deprecated messages

* deprecate later

add an example to setControlCHook (nim-lang#19416)

* add an example to setControlCHook

* [skip CI] format example for setControlCHook

Co-authored-by: Nathan Blaxall <nathan.blaxall@actionstep.com>

fix term rewriting with sideeffect (nim-lang#19410)

* fix term rewriting with sideeffect

fix nim-lang#6217

* add tests

* Update tests/template/template_various.nim

Resolve cross file resolution errors in atomics (nim-lang#19422) [backport:1.6]

* Resolve call undeclared routine testAndSet

* Fix undeclared field atomicType

Fix nim-lang#11923 (nim-lang#19427)

* Apply commit nim-lang@5da931f that was never merged (was part of a bigger PR). Should fix issue nim-lang#11932

* add a generic object for custom pragma

os: faster getFileSize (nim-lang#19438)

Use "stat" rather than "open", "seek", and "close" system calls.
The Windows implementation remains the same.

bugfix: varargs count as open arrays (nim-lang#19447)

update outdated link (nim-lang#19465)

Ref nim-lang#19463

Update jsfetch with latest API and fix missing bindings (nim-lang#19473)

* Update with latest API and fix missing bindings

remove deprecated `Body`
remove implicit `cstring` convs
add `Headers` to `FetchOptions`
add `Request` init proc which takes `FetchOptions`

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* remove experimental flag

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

No longer segfault when using a typeclass with a self referencing type (nim-lang#19467)

Clonkk fix2 11923 (nim-lang#19451)

* fix nnkBracketExpr not compiling for getImpl on customPragmaNode

* fix test import

* fix alias not working with hasCustomPragmas

fix parseEnum cannot parse enum with const fields (nim-lang#19466)

fix nim-lang#19463

Add compilers and hints to default nim.cfg (nim-lang#18424)

don't use a temp for addr [backport: 1.6] (nim-lang#19503)

* don't use a temp for addr

fix nim-lang#19497

* Update compiler/ccgcalls.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* add a test

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fixes nim-lang#19404 by protecting the memory we borrow from. this replaces crashes with minor memory leaks which seems to be acceptable. In the longer run we need a better VM that didn't grow hacks over a decade. (nim-lang#19515)

Co-authored-by: flywind <xzsflywind@gmail.com>

Remove backslash in glob pattern (nim-lang#19524)

use OrderedTable instead of OrderedTableRef for mimedb (nim-lang#19522)

* use OrderedTable instead of OrderedTableRef for mimedb

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

* added changelog entry for mimedb change

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

Remove Deprecated oids.oidsToString (nim-lang#19519)

* Remove deprecated oids.oidToString

* Remove deprecated oids.oidToString

Remove deprecated math.c_frexp (nim-lang#19518)

* Remove Deprecated math proc

* Remove Deprecated math proc

* Remove Deprecated math proc

[testcase] genSym fails to make unique identifier for ref object types (nim-lang#19506)

close nim-lang#15118

Documentation: Fix word usage (nim-lang#19529)

Update chcks.nim (nim-lang#19540)

keep casing of noinit and noreturn pragmas consistently documented (nim-lang#19535)

compile pragma: cache the result sooner (nim-lang#19554)

extccomp.addExternalFileToCompile() relies on hashes to decide whether
an external C file needs recompilation or not.

Due to short-circuit evaluation of boolean expressions, the procedure
that generates a corresponding hash file is not called the first time an
external file is compiled, so an avoidable recompilation is triggered
the next build.

This patch fixes that by moving the proc call with a desired side
effect from its boolean expression, so it's executed unconditionally.
Clyybber pushed a commit to Clyybber/Nim that referenced this pull request Feb 25, 2022
Concerns these changes:
nim-lang/Nim@727c637...340b5a1

Excluded changes are:
nim-lang#18963
nim-lang#19003
nim-lang#19043
nim-lang#19055
nim-lang#19053
nim-lang#19064
nim-lang#18642
nim-lang#19062
nim-lang#19082
nim-lang#19090
nim-lang#19077
nim-lang#19021
nim-lang#19100
nim-lang#19102
nim-lang#19111
nim-lang#19115
nim-lang#19133
nim-lang#19142
nim-lang#19158
nim-lang#19129
nim-lang#19137
nim-lang#19168
nim-lang#19156
nim-lang#19147
nim-lang#19180
nim-lang#19183
nim-lang#19182
nim-lang#19187
nim-lang#19179
nim-lang#19209
nim-lang#19210
nim-lang#19207
nim-lang#19219
nim-lang#19195
nim-lang#19212
nim-lang#19134
nim-lang#19235
nim-lang#19252
nim-lang#19196
nim-lang#19295
nim-lang#19301
nim-lang#19181
nim-lang#17223
nim-lang#19370
nim-lang#19385
nim-lang#19307
nim-lang#19394
nim-lang#19399
nim-lang#19390
nim-lang#19407
nim-lang#19419
nim-lang#19421
nim-lang#19363
nim-lang#19406
nim-lang#19431
nim-lang#19455
nim-lang#19461
nim-lang@cb894c7
nim-lang#19462
nim-lang#19442
nim-lang#19437
nim-lang#19433
nim-lang#19512
nim-lang#19487
nim-lang#19543

Excluded changes include major changes which require more consideration
and changes which don't apply to the current code anymore but could be
worth porting over still.

Excluded changes which only change the identifier casing in tests
or only concern code removed in nimskull aren't listed.

Begin commit listing:

use two underscores for easy demangling [backport:1.6] (nim-lang#19028)

Add Elbrus 2000 architecture (nim-lang#19024)

* Add Elbrus 2000 architecture

* Add e2k to niminst

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove exception (nim-lang#18906)

allow converting static vars to `openArray` (nim-lang#19035)

When assigning constant output to a seq, and then passing that static
seq to other functions that take `openArray`, the compiler may end up
producing errors, as it does not know how to convert `static[seq[T]]`
to `openArray[T]`. By ignoring the `static` wrapper on the type for
the purpose of determining data memory location and length, this gets
resolved cleanly. Unfortunately, it is relatively tricky to come up
with a minimal example, as there are followup problems from the failing
conversion, e.g., this may lead to `internal error: inconsistent
environment type`, instead of the relevant `openArrayLoc` error message.

use the correct header for TIOCGWINSZ on Solaris (nim-lang#19037)

Minor update to terminal docs (nim-lang#19056)

* Update terminal.nim

- Added some extra docs to cursorUp/Down/Forward/Backward
- I was able to use hideCursor and showCursor without adding stdout, removed the parameter
- Added docs to terminalHeight()* and terminalWidth()*

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Update lib/pure/terminal.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Added back f: file to cursor movement

* Removed unnecessary comments

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fix a tiny formating issue in doc/destructors.rst (nim-lang#19058)

fix a tiny code snippet formatting issue in `doc/constructors.rst`, again (nim-lang#19065)

Fix nimIdentNormalize, fixes nim-lang#19067 (nim-lang#19068)

* Make nimIdentNormalize return "" when passed ""; fixes nim-lang#19067

Fixes nim-lang#19067

* Add tests for nimIdentNormalize

fix nim-lang#18971 (nim-lang#19070) [backport:1.6]

since the example code return value from global variable, instead
of first argument, the `n.len` is 1 which causes compiler crashes.

fixes nim-lang#19000 (nim-lang#19032)

* fixes nim-lang#19000

* progress

fix nim-lang#18410 (Errors initializing an object of RootObj with the C++ backend) [backport] (nim-lang#18836)

* fix nim-lang#18410

* one line comment

* typo

* typo

* cover cpp

update numbers of lifetime-tracking hooks in doc/destructors.rst (nim-lang#19088)

bootstrapping Nim compiler with `cpp --gc:orc` (nim-lang#19087)

libs/impore/re: Add note about the requirement of `matches` to be pre-allocated (nim-lang#19081)

Add few runnableExamples for `findBounds` for clarity.

Fixes nim-lang#18775

Add test for issue 15435 (nim-lang#19079)

* Add test for issue 15435

Closes nim-lang#15435.

* Specify bug # in comment

Addresses nim-lang#19079 (comment)

manual: Document the use of `static` as a proc call (nim-lang#19084)

* manual: Document the use of `static` as a proc call

Also adds tests.

Fixes nim-lang#16987 .

* Update doc/manual.rst

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

* manual: Undocument usage of foo.static

foo.static and foo.static() are not expected to work.

Ref: https://github.com/nim-lang/Nim/pull/19084/files#r741203578

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

manual: Document that comma propagates the default values of parameters (nim-lang#19080)

* manual: Document that comma propagates the default values of parameters

Fixes nim-lang#15949.

* Use the "bug #NNNN" comment syntax for consistency

Ref:
https://nim-lang.github.io/Nim/contributing.html#writing-tests-stdlib

> Always refer to a GitHub issue using the following exact syntax: bug
for tooling.

fixes nim-lang#19011 [backport:1.6] (nim-lang#19114)

Add deprecation pragmas in lib/deprecated/pure (nim-lang#19113)

Deprecate `std/sharedlist` and `std/sharedtables` (nim-lang#19112)

fix nimindexterm in rst2tex/doc2tex [backport] (nim-lang#19106)

* fix nimindexterm (rst2tex/doc2tex) [backport]

* Add support for indexing in rst

Call {.cursor.} a pragma. (nim-lang#19116)

* Call {.cursor.} a pragma.

Its hard to find .curser annotation while googling because all other things like it are called pragmas. See https://nim-lang.org/docs/manual.html#pragmas
Also the . in front of the name makes it hard to find and search for.

Can we just call it cursor pragma?

* Small fix for comment.

Remove tlsEmulation enabled from Windows + GCC config (nim-lang#19119) [backport:1.6]

This flag has a very significant performance impact on programs compiled with --threads:on. It is also apparently not needed anymore for standard circumstances. Can we remove the config? See nim-lang#18146 (comment) for discussion and perf impact. [backport:1.6]

Add security tip for setCookie (nim-lang#19117)

* Add security tip for setCookie

* Update lib/pure/cookies.nim

Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

* Update lib/pure/cookies.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>
Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

correct cookie docs (nim-lang#19122)

refactoring: orc can use getThreadId() (nim-lang#19123)

* refactoring: orc can use getThreadId()

* progress

fixed colorNames sorting mistake (nim-lang#19125) [backport]

update manual (nim-lang#19130) [backport]

Merge file size fields correctly on Windows (nim-lang#19141)

* Merge file size fields correctly on Windows

Merge file size fields correctly on Windows

- Merge the two 32-bit file size fields from `BY_HANDLE_FILE_INFORMATION` correctly in `rawToFormalFileInfo`.
- Fixes nim-lang#19135

* Update os.nim

Fix punycode.decode function (nim-lang#19136)

* Refactor: rename proc to func

* Fix punycode.decode function

This function could only properly decode punycodes containing a single
encoded unicode character. As soon as there was more than one punycode
character group to decode it produced invalid output - the number of
characters was correct, but their position was not.

* Update tpunycode.nim

Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>

Fix undeclared 'SYS_getrandom' on emscripten (nim-lang#19144)

wrong spaces (3 => 2) (nim-lang#19145)

`caseStmtMacros` no longer experimental, experimental manual refactor (nim-lang#19173)

* `caseStmtMacros` no longer experimental, experimental manual refactor

* Update doc/manual.rst

* apply review suggestions

* apply review

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix inline syntax highlighting in system.nim (nim-lang#19184)

swap port to correct port order (nim-lang#19177)

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

feat: TLS-ALPN wrappers for OpenSSL (nim-lang#19202)

Co-authored-by: Iced Quinn <icedquinn@iceworks.cc>

misc bugfixes [backport:1.2] (nim-lang#19203)

treat do with pragmas but no parens as proc (nim-lang#19191)

fixes nim-lang#19188

[format minor] remove unnecessary spaces (nim-lang#19216)

Making TCC work again on Windows --cpu:amd64 - fix nim-lang#16326 (nim-lang#19221)

* fix nim-lang#16326

* removing comments

fixes a converter handling regression that caused private converters to leak into client modules; fixes nim-lang#19213; [backport:1.6] (nim-lang#19229)

Add support for LoongArch (nim-lang#19223)

* Add support for LoongArch

* Update compiler/installer.ini

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

remove `std/sharedstrings` (nim-lang#19228)

* remove std/sharedstrings

it has been broken since 0.18.0

* rephrase the changelog entry

add comments to spawn and pinnedSpawn (nim-lang#19230)

`spawn` uses `nimSpawn3` internally and `pinnedSpawn` uses `nimSpawn4` internally. I comment it in order to help contributors get the gist of its functionality.

fixes an old ARC bug: the produced copy/sink operations don't copy the hidden type field for objects with enabled inheritance; fixes nim-lang#19205 [backport:1.6] (nim-lang#19232)

nimRawSetjmp: support Windows (nim-lang#19197)

* nimRawSetjmp: support Windows

Using `_setjmp()` directly is required to avoid some rare (but very
annoying) exception-related stack corruption leading to segfaults on
Windows, with Mingw-w64 and SEH.
More details: status-im/nimbus-eth2#3121

Also add "nimBuiltinSetjmp" - mostly for benchmarking.

* fix for Apple's Clang++

Revert "swap port to correct port order (nim-lang#19177)" (nim-lang#19234)

This reverts commit 0d0c249.

move toDeque to after addLast (nim-lang#19233) [backport:1.0]

Changes the order of procs definitions in order to avoid calling an undefined proc.

let Nim support Nimble 0.14 with lock-file support [backport:1.6] (nim-lang#19236)

nimc.rst: fix table markup (nim-lang#19239)

Various std net improvements (nim-lang#19132)

* Variant of  that works with raw IpAddresses.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len

* fix test failing - byte len

* debugging odd windows build failure

* debugging odd windows build failure

* more experiments to figure out the windows failure

* try manual assigment on InAddr

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>

fix bug nim-lang#14468 zero-width split (nim-lang#19248)

basicopt.txt: Unify the format (nim-lang#19251)

fix: fixes bug in CVerifyPeerUseEnvVars (nim-lang#19247)

Previously CVerifyPeerUseEnvVars was not being passed into
scanSslCertificates, which meant that we weren't scanning
additional certificate locations given via the SSL_CERT_FILE and
SSL_CERT_DIR environment variables

suggestion to respect typedarray type (nim-lang#19257)

* suggestion to respect typedarray

* Update jssys.nim

Co-authored-by: Sven Keller <s.keller@cortona.de>

fix nim-lang#19244 - solves the problem of the InAddr object constructor in Windows. (nim-lang#19259)

* Update winlean.nim

* Update tnet_ll.nim

Fixed typo in manual.rst unsafeAssign->uncheckedAssign. Fixes part 1 of nim-lang#19266 (nim-lang#19267)

use uppercase "type" for Proxy-Authorization header (nim-lang#19273)

Some servers will reject authorization requests with a lowercase "basic" type. Changing to "Basic" seems to solve these issues.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization

Update colors.nim (nim-lang#19274)

* Update colors.nim

Added `lightgray` alias to `lightgrey` and `...grey`aliases for the rest of the gray colors.
Added color `rebeccapurple`.
Fixed the incorrect values for the `PaleVioletRed` and `MediumPurple` colors.
This module should now be matching the CSS colors.
I used the seq[tuple] syntax for defining the names.

* Document colors changes.

Extract runnables that specify `doccmd` (nim-lang#19275) [backport:1.6]

Fix build on FreeBSD/powerpc (nim-lang#19282)

It's currently misdetected as powerpc64.

Fix nim-lang#19107 (nim-lang#19286) [backport]

fixes grammar typos [backport] (nim-lang#19289)

fix 19292 (nim-lang#19293)

Fix nim-lang#19297 - fixing broken list after adding empty list (nim-lang#19299)

* Update lists.nim

* Update tlists.nim

* removed check `if b.tail != nil`

The tail of the list being null it is still possible to retrieve its end by going through all nodes from the head. So checking for null from `b.tail` is unnecessary. However, setting `a.tail = b.tail` only if `a.head != nil`, so you don't break a good list with an already broken one.

fixes nim-lang#16617 [backport] (nim-lang#19300)

Update JS and nimscript import tests (nim-lang#19306)

* add new modules, except experimental ones
* remove deprecated modules mersenne and sharedlist
* better describe why some modules fail and some modules don't

add compile time option for POSIX sigwait on Illumos/Solaris (nim-lang#19296)

* add compile time option for POSIX sigwait on Illumos/Solaris

* fix link to documentation of `sigwait` on Illumos/Solaris

[docs] clarify the raised exception (nim-lang#19308)

* [docs] clarify the raised exception

Lest developers wanna know what the exception is.

* Apply suggestions from @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

docs: Fix typo in tut1.rst (nim-lang#19309)

Fix nim-lang#19314 - fixing broken `DoublyLinkedList` after adding empty `DoublyLinkedList` (nim-lang#19315) [backport]

* Update lists.nim

* Update tlists.nim

fixed typos (nim-lang#19316)

devel: style fix (nim-lang#19318)

this allows "--styleCheck:usages --styleCheck:error"

docs: Fix typo in tut1.rst (nim-lang#19324)

correct the comments (nim-lang#19322)

--expandArc

```
var
  a
  b
a = matrix(5, 5, 1.0)
b = matrix(5, 5, 2.0)
`=sink`(b, -
  let blitTmp = b
  wasMoved(b)
  blitTmp +
    a)
`=destroy`(b)
`=destroy`(a)
```

add std/private/win_getsysteminfo; refactor the usage of `GetSystemInfo` (nim-lang#19310)

* add std/private/win_getsysteminfo

* import at the top level

* wrappers follow nep1 too

* follow review comment

Update net.nim (nim-lang#19327) [backport]

Fix nim-lang#19038 - making the Nim compiler work again on Windows XP (nim-lang#19331)

* Update osenv.nim

* Update win_setenv.nim

* Update lib/pure/includes/osenv.nim

* Update lib/pure/includes/osenv.nim

* fixing cstring

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

fix nim-lang#19343 (nim-lang#19344) [backport]

Ensure HttpClient onProgress is called once per second
Ensure that reported speed is accurate

stylecheck usages part two: stdlib cleanup (nim-lang#19338)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

added filemode docs (nim-lang#19346)

Fix `remove` on last node of singly-linked list [backport:1.6] (nim-lang#19353)

fix stylecheck error with asyncdispatch (nim-lang#19350)

* stylecheck usages part two: stdlib cleanup

typeinfo.nim: importCompilerProc => importcompilerproc

nre.nim: newLineFlags => newlineFlags

system.nim: JSRoot => JsRoot

ref nim-lang#19319

* prefer importCompilerProc

* fix stylecheck error with asyncdispatch

it is a partial regression since nim-lang#12842

* add tests

* don't use echo in tests

remove spaces between an identifier and a star (nim-lang#19355)

It makes search easier by searching `+`* instead of `+` which filter lots of unexported versions.

Follow nim-lang#18681

bitsets.nim: cleanup (nim-lang#19361)

make rst thread safe (nim-lang#19369)

split for the convenience of review

docs: Mention `import foo {.all.}` syntax (nim-lang#19377)

Mention the `import foo {.all.}` syntax in the manual,
with a caveat about private imports.
Also link to the experimental importutils module.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

update copyright year (nim-lang#19381)

docs: Fix broken cross references to `rfind` in strutils (nim-lang#19382) [backport]

Fixes three broken cross references to `rfind` in strutils.
Breakage due to signature changes of the `rfind` methods.

Co-authored-by: adigitoleo <adigitoleo@dissimulo.com>

move type operation section and remove deepcopy document (nim-lang#19389)

ref nim-lang#19173; because deepcopy is not fit for ORC/ARC which was used for spawn and spawn will be removed from compiler

deprecate unsafeAddr; extend addr (nim-lang#19373)

* deprecate unsafeAddr; extend addr

addr is now available for all addressable locations, unsafeAddr is deprecated and become an alias for addr

* follow @Vindaar's advice

* change the signature of addr

* unsafeAddr => addr (stdlib)

* Update changelog.md

* unsafeAddr => addr (tests)

* Revert "unsafeAddr => addr (stdlib)"

This reverts commit ab83c99.

* doc changes; thanks to @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

improve changelog a bit (nim-lang#19400)

mangle names in nimbase.h using cppDefine (nim-lang#19395) [backport]

mangle names in nimbase.h
fix comments

Optimize lent in JS [backport:1.6] (nim-lang#19393)

* Optimize lent in JS [backport:1.6]

* addr on lent doesn't work anymore, don't use it

* use unsafeAddr  in test again for older versions

update deprecated example (nim-lang#19415)

`toNimIdent` proc is deprecated, so I replaced it with `ident` proc

Improve Zshell completion (nim-lang#19354)

fix stricteffects (nimsuggest/sexp) (nim-lang#19405)

* fix stricteffects (nimsuggest/sexp)

* Update tstrict_effects3.nim

* Update tests/effects/tstrict_effects3.nim

suppress deprecated warnings (nim-lang#19408)

* suppress deprecated warnings

once bump version to 1.7.3 enable deprecated messages

* deprecate later

add an example to setControlCHook (nim-lang#19416)

* add an example to setControlCHook

* [skip CI] format example for setControlCHook

Co-authored-by: Nathan Blaxall <nathan.blaxall@actionstep.com>

fix term rewriting with sideeffect (nim-lang#19410)

* fix term rewriting with sideeffect

fix nim-lang#6217

* add tests

* Update tests/template/template_various.nim

Resolve cross file resolution errors in atomics (nim-lang#19422) [backport:1.6]

* Resolve call undeclared routine testAndSet

* Fix undeclared field atomicType

Fix nim-lang#11923 (nim-lang#19427)

* Apply commit nim-lang@5da931f that was never merged (was part of a bigger PR). Should fix issue nim-lang#11932

* add a generic object for custom pragma

os: faster getFileSize (nim-lang#19438)

Use "stat" rather than "open", "seek", and "close" system calls.
The Windows implementation remains the same.

bugfix: varargs count as open arrays (nim-lang#19447)

update outdated link (nim-lang#19465)

Ref nim-lang#19463

Update jsfetch with latest API and fix missing bindings (nim-lang#19473)

* Update with latest API and fix missing bindings

remove deprecated `Body`
remove implicit `cstring` convs
add `Headers` to `FetchOptions`
add `Request` init proc which takes `FetchOptions`

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* Update lib/std/jsfetch.nim

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

* remove experimental flag

Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>

No longer segfault when using a typeclass with a self referencing type (nim-lang#19467)

Clonkk fix2 11923 (nim-lang#19451)

* fix nnkBracketExpr not compiling for getImpl on customPragmaNode

* fix test import

* fix alias not working with hasCustomPragmas

fix parseEnum cannot parse enum with const fields (nim-lang#19466)

fix nim-lang#19463

Add compilers and hints to default nim.cfg (nim-lang#18424)

don't use a temp for addr [backport: 1.6] (nim-lang#19503)

* don't use a temp for addr

fix nim-lang#19497

* Update compiler/ccgcalls.nim

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* add a test

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

fixes nim-lang#19404 by protecting the memory we borrow from. this replaces crashes with minor memory leaks which seems to be acceptable. In the longer run we need a better VM that didn't grow hacks over a decade. (nim-lang#19515)

Co-authored-by: flywind <xzsflywind@gmail.com>

Remove backslash in glob pattern (nim-lang#19524)

use OrderedTable instead of OrderedTableRef for mimedb (nim-lang#19522)

* use OrderedTable instead of OrderedTableRef for mimedb

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

* added changelog entry for mimedb change

Signed-off-by: David Krause <enthus1ast@users.noreply.github.com>

Remove Deprecated oids.oidsToString (nim-lang#19519)

* Remove deprecated oids.oidToString

* Remove deprecated oids.oidToString

Remove deprecated math.c_frexp (nim-lang#19518)

* Remove Deprecated math proc

* Remove Deprecated math proc

* Remove Deprecated math proc

[testcase] genSym fails to make unique identifier for ref object types (nim-lang#19506)

close nim-lang#15118

Documentation: Fix word usage (nim-lang#19529)

Update chcks.nim (nim-lang#19540)

keep casing of noinit and noreturn pragmas consistently documented (nim-lang#19535)

compile pragma: cache the result sooner (nim-lang#19554)

extccomp.addExternalFileToCompile() relies on hashes to decide whether
an external C file needs recompilation or not.

Due to short-circuit evaluation of boolean expressions, the procedure
that generates a corresponding hash file is not called the first time an
external file is compiled, so an avoidable recompilation is triggered
the next build.

This patch fixes that by moving the proc call with a desired side
effect from its boolean expression, so it's executed unconditionally.
PMunch pushed a commit to PMunch/Nim that referenced this pull request Mar 28, 2022
* Variant of  that works with raw IpAddresses.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len

* fix test failing - byte len

* debugging odd windows build failure

* debugging odd windows build failure

* more experiments to figure out the windows failure

* try manual assigment on InAddr

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>
narimiran added a commit that referenced this pull request Mar 31, 2022
* Variant of  that works with raw IpAddresses.

- Add doc tests for new net proc's.
- Aadd recvFrom impl
- Add recvFrom impl -- tweak handling data var

- Update lib/pure/net.nim
	Co-authored-by: Dominik Picheta <dominikpicheta@googlemail.com>

- cleaning up sendTo args
- remove extra connect test
- cleaning up sendTo args
- fix inet_ntop test
- fix test failing - byte len

* fix test failing - byte len

* debugging odd windows build failure

* debugging odd windows build failure

* more experiments to figure out the windows failure

* try manual assigment on InAddr

Co-authored-by: Jaremy Creechley <jaremy.creechley@panthalassa.com>
(cherry picked from commit 4b5cecd)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants