
获得徽章 7
Structs 本来在V8和TS团队的强力推进下应该会进JS标准,但最近有了变数——tsc官宣改用Go了,意味着TS团队以tsc作为struct的用例已经丧失了现实性,而且TS之父Anders Hejlsberg在访谈中谈到为编译器这样的非典型应用给JS加入struct是否对整个社区有价值(见视频26分04秒:
www.youtube.com )。这意味着TS团队有可能撤回对structs提案的投入(具体还是要等以后会议上TS团队人的说法)。
展开
评论
点赞
向Oracle要求放弃JavaScript商标的公开信活动(
javascript.tm )已经征集到了接近一万个签名并且还在飞速增长。过去Node.js的创始人Ryan Dahl就曾发起过这个动议。这次则是更正式,并在社区中做了广泛动员。签名的重要社区成员除了Ryan之外,还有JavaScript之父Brendan Eich、npm创始人Isaac Z. Schlueter、JavaScript规范的当前编辑Michael Ficarra 和 Shu-yu Guo(郭纾宇)、Svelte和Rollup等项目的创始人Rich Harris等。我翻阅了一下签名列表,还看到了不少熟悉的名字,比如尤雨溪。我自己昨天也签了一下(直接用github账号授权即可)。关于JavaScript名称的故事可以参考我以前写的回答:
www.zhihu.com 。顺便说一句,Oracle现在在TC39也是有代表的,尽管很少在会议上看到他们的人发言。也不知道10月份的TC39会议是不是会讨论这个话题(目前日程里并没有)。
展开
2
点赞
TC39最近修改了提案的流程阶段,在原本的4个stage(如果算上stage0是5个)上又加了个新的stage,加在stage2和3之间,是stage 2.7。关于这个stage为啥被命名为stage 2.7,贴一段我当时在群里的评论,以防我自己都忘记了:
之所以是这个数字,是因为第一不想改其他数字(因为改变太大,影响现有认知);一些人反对 2.5 (觉得这个新stage更靠近 3),一些人反对 2.9(认为万一再要新加,不要搞 2.95这种),最后就 2.7 了。虽然诞生过程如此乏味,有情怀的人在 matrix 里给了两种理解,第一种是 e 的近似。第二种是 2.62 的近似。你们喜欢哪一种就看着办~
之所以是这个数字,是因为第一不想改其他数字(因为改变太大,影响现有认知);一些人反对 2.5 (觉得这个新stage更靠近 3),一些人反对 2.9(认为万一再要新加,不要搞 2.95这种),最后就 2.7 了。虽然诞生过程如此乏味,有情怀的人在 matrix 里给了两种理解,第一种是 e 的近似。第二种是 2.62 的近似。你们喜欢哪一种就看着办~
展开
评论
点赞
刚刚看了下 memgpt,主要还是在 context 长度管理上,我感觉其思路和我想的差不多…… 只不过它是在GPT4的11月更新之前发的,现在的有效 context 长度可能比当时长了5倍以上。此外它用操作系统虚拟内存做类比,我倒是有个想法,可以对会话信息做更精细的处理,这就可以跟虚拟机的GC做类比。比如分析每条历史会话和当前状态的相关性,相关度最差的就archive掉,这就是GC。为了提升性能节约成本,可以经过多次都存活的历史会话标记一下就不用检查了,这就是新生代和老生代机制。如果有谁按这个思路做了写了论文,记得让我挂名混个三作四作就行,嘻嘻。
展开
8
21
常见的给请求加 timeout 的代码:
```ts
async function get(url: string, timeout: number) {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => reject(new Error("Timeout")), timeout);
});
const fetchPromise = fetch(url)
// 使用Promise.race来竞赛fetch请求和超时Promise
return Promise.race([fetchPromise, timeoutPromise]);
}
```
这代码work,但利用好API可以更简单:
```ts
return fetch(url, { signal: AbortSignal.timeout(timeout) })
```
```ts
async function get(url: string, timeout: number) {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => reject(new Error("Timeout")), timeout);
});
const fetchPromise = fetch(url)
// 使用Promise.race来竞赛fetch请求和超时Promise
return Promise.race([fetchPromise, timeoutPromise]);
}
```
这代码work,但利用好API可以更简单:
```ts
return fetch(url, { signal: AbortSignal.timeout(timeout) })
```
展开
1
4