Files
Maven/vendor/modernc.org/libc/libc64.go
T
kami 6c92f85d10 feat(ecosystem): compliant Praxis/Hexis integration + vendored build
Bring the Nexus/Praxis/Hexis integration in line with
MAVEN_ECOSYSTEM_ARCHITECTURE.md:

- Praxis over HTTP: drop the in-process praxis.db open (praxisstore/
  praxistools) and call praxisd's /api/v1/tools/* API via a new praxisClient.
  Honors the "no component reads another's DB" invariant (AC#12).
  PraxisConfig.DBPath -> URL.
- Hexis confirmation gate: mutating capabilities (ReadOnly=false) now park a
  bound pendingHexis confirmation and require a spoken "да" before executing;
  read-only run immediately (AC#7, no auto attention->action).
- Capability safety: >1 verb match is ambiguous -> ask instead of firing the
  first; ambiguous Nexus resolution asks for clarification (AC#2).
- Correlation IDs on Hexis execute, recorded in the cross-service trace.
- Bug: importance arrives as JSON float64 over HTTP, not int.
- Tests: confirm-gate, decline, read-only, and ambiguity paths.

Build: vendor/ bakes in the hexis client (replace-directed at a sibling repo
outside the Docker context); Dockerfile builds from vendor and no longer
`go mod download`s the unreachable replace paths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 20:24:33 +04:00

80 lines
2.2 KiB
Go

// Copyright 2020 The Libc Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build (!linux && !(386 || arm)) || mips64le
package libc // import "modernc.org/libc"
import (
"unsafe"
"modernc.org/libc/limits"
"modernc.org/libc/sys/types"
)
const (
heapSize = 2 << 30 // Adjust for your debugging session requirements and system RAM size.
)
type (
// RawMem represents the biggest byte array the runtime can handle
RawMem [1<<50 - 1]byte
// 48-5*8 = 8 bytes left to pad
stackHeaderPadding struct {
a uintptr
}
)
type bitz []int // was bits but that is now an import qaulifier in use by mem.go
func newBits(n int) (r bitz) { return make(bitz, (n+63)>>6) }
func (b bitz) has(n int) bool { return b != nil && b[n>>6]&(1<<uint(n&63)) != 0 }
func (b bitz) set(n int) { b[n>>6] |= 1 << uint(n&63) }
func Xstrchrnul(tls *TLS, s uintptr, c int32) (r uintptr) {
if __ccgo_strace {
trc("tls=%v s=%v c=%v, (%v:)", tls, s, c, origin(2))
defer func() { trc("-> %v", r) }()
}
var k types.Size_t
var w uintptr
_, _ = k, w
c = int32(uint8(c))
if !(c != 0) {
return s + uintptr(Xstrlen(tls, s))
}
for {
if !(uint64(s)%Uint64FromInt64(8) != 0) {
break
}
if !(*(*int8)(unsafe.Pointer(s)) != 0) || int32(*(*uint8)(unsafe.Pointer(s))) == c {
return s
}
goto _1
_1:
s++
}
k = uint64(-Int32FromInt32(1)) / Uint64FromInt32(limits.UCHAR_MAX) * uint64(c)
w = s
for {
if !(!((*(*uint64)(unsafe.Pointer(w))-uint64(-Int32FromInt32(1))/Uint64FromInt32(limits.UCHAR_MAX)) & ^*(*uint64)(unsafe.Pointer(w)) & (uint64(-Int32FromInt32(1))/Uint64FromInt32(limits.UCHAR_MAX)*uint64(Int32FromInt32(limits.UCHAR_MAX)/Int32FromInt32(2)+Int32FromInt32(1))) != 0) && !((*(*uint64)(unsafe.Pointer(w))^k-uint64(-Int32FromInt32(1))/Uint64FromInt32(limits.UCHAR_MAX)) & ^(*(*uint64)(unsafe.Pointer(w))^k) & (uint64(-Int32FromInt32(1))/Uint64FromInt32(limits.UCHAR_MAX)*uint64(Int32FromInt32(limits.UCHAR_MAX)/Int32FromInt32(2)+Int32FromInt32(1))) != 0)) {
break
}
goto _2
_2:
w += 8
}
s = w
for {
if !(*(*int8)(unsafe.Pointer(s)) != 0 && int32(*(*uint8)(unsafe.Pointer(s))) != c) {
break
}
goto _3
_3:
s++
}
return s
}