修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善

This commit is contained in:
TermiNexus committed 2026-09-23 17:42:03 +08:00
1 parent 0d77b68cc4
commit 0f556463e7
116 files changed
+13896 -4938

No files matched your search

+28 -28
View File
@@ -34,9 +34,9 @@ HTTPS_PORT: t.CDefine = 443
# 模块内部状态
_ossl_ready: bool = False
_socket_ready: bool = False
_err_store: t.CArray[t.CChar, 512] # 最近一次失败原因(静态缓冲)
_info_store: t.CArray[t.CChar, 512] # 最近一次成功握手的 TLS 元信息
_scratch_store: t.CArray[t.CChar, 512] # 临时拼接缓冲
_err_store: t.CArray[char, 512] # 最近一次失败原因(静态缓冲)
_info_store: t.CArray[char, 512] # 最近一次成功握手的 TLS 元信息
_scratch_store: t.CArray[char, 512] # 临时拼接缓冲
_last_verify_val: INT = -1 # 最近一次握手后 SSL_get_verify_result(0=通过;-1=未启用)
_last_verify_flag: INT = -1 # 最近一次请求 verify 标志(1=开启;0=关闭;-1=未知)
@@ -48,12 +48,12 @@ _last_verify_flag: INT = -1 # 最近一次请求 verify 标志(1=
# _st_status: HTTP 状态码(失败网络路径为负错误码)
# ============================================================
STREAM_CAP: t.CDefine = 262144
_st_buf: t.CArray[t.CChar, 262144]
_st_len: t.CSizeT = 0
_st_consumed: t.CSizeT = 0
_st_buf: t.CArray[char, 262144]
_st_len: sizet = 0
_st_consumed: sizet = 0
_st_state: INT = 0
_st_status: INT = 0
_st_err: t.CArray[t.CChar, 512]
_st_err: t.CArray[char, 512]
def stream_begin():
@@ -76,12 +76,12 @@ def stream_pull(out: str, cap: INT) -> INT:
avail = INT(_st_len - _st_consumed)
if avail > cap - 1:
avail = cap - 1
i: t.CSizeT = 0
while i < t.CSizeT(avail):
i: sizet = 0
while i < sizet(avail):
out[i] = _st_buf[_st_consumed + i]
i += 1
out[t.CSizeT(avail)] = 0
_st_consumed += t.CSizeT(avail)
out[sizet(avail)] = 0
_st_consumed += sizet(avail)
return avail
@@ -251,8 +251,8 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
return None
# ---- 解析 URL ----
host_buf: t.CArray[t.CChar, 256]
path_buf: t.CArray[t.CChar, 1024]
host_buf: t.CArray[char, 256]
path_buf: t.CArray[char, 1024]
port: INT = 0
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
@@ -433,7 +433,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
# ---- 接收响应(缓冲自动翻倍增长, 支持 MB 级正文, 如 MNIST .gz 下载) ----
resp_cap: INT = requests.HTTP_BUFSIZ
resp_buf: str = requests._mbuddy.alloc(t.CSizeT(resp_cap))
resp_buf: str = requests._mbuddy.alloc(sizet(resp_cap))
if resp_buf is None:
_RecordErrorText("alloc response buffer failed")
openssl.SSL_free(ssl)
@@ -451,7 +451,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
if resp_cap >= 268435456:
break
resp_cap = resp_cap * 2
nb: t.CPtr = requests._mbuddy.realloc(resp_buf, t.CSizeT(resp_cap))
nb: t.CPtr = requests._mbuddy.realloc(resp_buf, sizet(resp_cap))
if nb is None:
_RecordErrorText("realloc response buffer failed")
requests._mbuddy.free(resp_buf)
@@ -461,7 +461,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
requests._mbuddy.free(errmsg)
requests.release(resp)
return None
resp_buf = t.CChar(t.CUInt64T(nb), t.CPtr)
resp_buf = char(t.CUInt64T(nb), t.CPtr)
room = resp_cap - 1 - total
n: INT = openssl.SSL_read(ssl, resp_buf + total, room)
if n <= 0:
@@ -623,10 +623,10 @@ def _StreamAppendContent(txt: str):
global _st_len
if txt is None:
return
pos: t.CSizeT = _st_len
i: t.CSizeT = 0
pos: sizet = _st_len
i: sizet = 0
while txt[i] != 0:
if pos >= t.CSizeT(STREAM_CAP) - 1:
if pos >= sizet(STREAM_CAP) - 1:
break
_st_buf[pos] = txt[i]
pos += 1
@@ -666,8 +666,8 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
if errmsg is None:
return -1
host_buf: t.CArray[t.CChar, 256]
path_buf: t.CArray[t.CChar, 1024]
host_buf: t.CArray[char, 256]
path_buf: t.CArray[char, 1024]
port: INT = 0
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
stdio.snprintf(errmsg, 512, "bad https url: %s", url)
@@ -822,7 +822,7 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
return -1
jpool: rawptr[memhub.MemPool] = memhub.MemPool(pmem, 524288)
leftover: t.CArray[t.CChar, 16384]
leftover: t.CArray[char, 16384]
llen: INT = 0
header_done: INT = 0
status_code: INT = 0
@@ -929,10 +929,10 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
# -3 其它失败(last_error() 查看原因)。
# ============================================================
def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
def _DlOnce(url: str, start: sizet, count: INT, verify: bool, ca_file: str,
dst: str, dst_cap: INT, out_status: INT | t.CPtr,
out_loc: str, out_loccap: INT,
out_total: t.CSizeT | t.CPtr) -> INT:
out_total: sizet*) -> INT:
"""HTTPS 单次 Range 拉取(线程安全,见模块注释)。"""
global _last_verify_val, _last_verify_flag
if url is None or dst is None or dst_cap <= 0 \
@@ -947,8 +947,8 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
if _EnsureReady() != 0:
return -3
host_buf: t.CArray[t.CChar, 256]
path_buf: t.CArray[t.CChar, 1024]
host_buf: t.CArray[char, 256]
path_buf: t.CArray[char, 1024]
port: INT = 0
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
_RecordErrorText("bad https url")
@@ -1023,7 +1023,7 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
cnt: INT = count
if cnt < 0:
cnt = 0
end: t.CSizeT = start + t.CSizeT(cnt) - 1
end: sizet = start + sizet(cnt) - 1
if cnt <= 0:
end = start
stdio.snprintf(req, 1024,
@@ -1082,7 +1082,7 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
else:
cl2: INT = requests._CLenOf(dst, total)
if cl2 > 0:
c.Set(c.Deref(out_total), t.CSizeT(cl2))
c.Set(c.Deref(out_total), sizet(cl2))
bo: INT = requests._FindBodyStart(dst, total)
if bo < 0 or bo >= total:
return 0