Skip to content

Conversation

@connor4312
Copy link
Member

@connor4312 connor4312 commented Dec 18, 2025

  • Generally types/IDs that were only specified as integers are now int32s.
  • Lines and columns are uint64 since they're only ever >=0 and we should be able to express more than (u)int32-sized files. With these and other 64-bit types, I set the minimum and maximum to the max safe floating point integers so as to ensure compatibility with floating-point-based runtimes, like JavaScript and Lua (<=5.2)
  • systemProcessId is an int32. While research shows there are some exotic systems where it can be an int64 (Solaris) it is practically still an int32 (even 64 bit Linux limits to 2^22) and we have already defined it as such elsewhere
  • Memory-related offset/count is defined as int64
  • namedVariables/indexedVariables are counts, but they were previously specified as having a max value of 2147483647 so I kept them as int32's with a minimum value in the schema

I would greatly appreciate folks that use various DAP clients to try this out and let me know if you run into issues or see things that should be changed. I'll keep this PR open for a while before merging it to gather feedback.

cc @osiewicz @mfussenegger @DanTup @octo @puremourning @gregg-miskelly

Closes #422
Closes #551

- Generally types/IDs that were only specified as `integer`s are now int32s.
  I only defined minimums on those that previously had ">0" behavior
- Lines and columns are uint64 since they're only ever >0 and we should
  be able to express more than (u)int32-sized files. With these and other
  64-bit types, I set the `minimum` and `maximum` to the max safe
  floating point integers so as to ensure compatibility with
  floating-point-based runtimes, like JavaScript and Lua (<=5.2)
- variablesReference is defined as uint32 because we consistently define
  behavior as "when variablesReference is >0" and "<0" is undefined
- systemProcessId is an int32. While research shows there are some
  exotic systems where it _can_ be an int64 (Solaris) it is practically
  still an int32 (even 64 bit Linux limits to 2^22) and we have already
  defined it as such elsewhere
- Memory-related offset/count is defined as int64
- namedVariables/indexedVariables are counts, but they were previously
  specified as having a max value of `2147483647` so I kept them as
  int32's with a `minimum` value in the schema

I would greatly appreciate folks that use various DAP clients to try
this out and let me know if you run into issues or see things that
should be changed. I'll keep this PR open for a while before merging
it to gather feedback.

Closes #422
Closes #551
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.

Clarify which numerical identifiers are allowed to be negative Clarify range of number

4 participants