WinterJS รันไทม์จาวาสคริปต์ที่พัฒนาต่อจาก SpiderMonkey และเขียนด้วย Rust เพิ่งประกาศเปิดตัวมาเมื่อสี่เดือนที่แล้ว ตอนนี้โครงการเข้าสู่เวอร์ชั่น 1.0 เรียบร้อยแล้ว เนื่องจากทำ API เข้ากันได้กับมาตรฐาน WinterCG และยังทำ API ของ Cloudflare
ในแง่ของประสิทธิภาพ WinterJS รันแบบเนทีฟได้ที่ระดับ 150k req/s เร็วกว่า Bun และ NodeJS ชัดเจน แต่หากคอมไพล์เป็น WASM นั้นประสิทธิภาพยังได้เพียง 20k req/s เท่านั้น
โครงการ Bun เพิ่มฟีเจอร์ Bun Shell ในเวอร์ชั่น 1.0.24 เปิดทางให้โปรแกรมเมอร์จาวาสคริปต์สามารถเขียนสคริปต์แบบเดียวกับ shell เพื่อให้จัดการระบบได้ซับซ้อนขึ้น เช่น การสำรองข้อมูล, ลบไฟล์, และรันโปรแกรมภายนอก
Bun Shell เป็น shell ที่อิมพลีเมนต์ขึ้นใหม่ทั้งหมด แก้ปัญหาการเรียก shell ภายนอกผ่าน subprocess ต่างๆ ที่กินเวลานาน และยังไม่สามารถทำงานข้ามแพลตฟอร์มได้ เช่น Bash นั้นไม่สามารถใช้งานบนวินโดวส์ได้
คำสั่งภายใน Bun Shell เองยังมีจำกัดมาก ได้แก่ cd, ls, rm, echo, pwd, และ bun ส่วนคำสั่ง mv นั้นยังอิมพลีเมนต์ไม่สมบูรณ์ และยังมีแผนอิมพลีเมนต์คำสั่ง mkdir, cp, และ cat ต่อไป ส่วนการเรียกโปรแกรมภายนอกนั้นสามารถเรียกตามโฟลเดอร์ PATH ได้เหมือน shell ปกติ
LangChain เปิดตัวเฟรมเวิร์กเวอร์ชัน 0.1.0 แล้ว หลังจากพัฒนามา 1 ปี
LangChain เป็นเฟรมเวิร์กโอเพนซอร์สยอดนิยมที่ออกแบบมาเพื่อช่วยสร้างแอปที่ใช้ LLM โดยเวอร์ชันนี้จะมีทั้ง Python และ JavaScript ซึ่งเป็นการปรับปรุงและเพิ่มความสามารถต่าง ๆ ดังนี้
DeepLearning.AI แพลตฟอร์มการเรียนรู้ AI และ Deep Learning ที่ก่อตั้งโดย Andrew Ng เปิดตัวหลักสูตรระยะสั้น Generative AI ในภาษา JavaScript ฟรีในช่วงเวลาจำกัด สอนการสร้างแอป LLM ด้วย LangChain โดย Jacob Lee วิศวกรซอฟต์แวร์ผู้ก่อตั้งและหัวหน้าผู้ดูแลโครงการ LangChain.js ใช้เวลาเรียน 1 ชม. เหมาะสำหรับนักพัฒนาเว็บที่มีพื้นฐานเกี่ยวกับ JavaScript ระดับกลาง
เมื่อเดือนธันวาคมที่ผ่านมา MySQL ประกาศเพิ่มฟีเจอร์การรันโค้ดภาษา JavaScript จากในฐานข้อมูลโดยตรง (stored programs) ลักษณะเดียวกับที่ Oracle Database ทำได้มาก่อนหน้านี้ (เวอร์ชัน 21c เป็นต้นมา)
โครงการ Biome ชุดเครื่องมือสำหรับพัฒนาเว็บประสิทธิภาพสูงประกาศความสำเร็จในการพัฒนาโครงการให้เกือบเทียบเท่าโครงการ Prettier โครงการ code formatter ยอดนิยมที่มียอดดาวน์โหลดถึงสัปดาห์ละ 29 ล้านครั้ง
ก่อนหน้านี้ Biome ทำงานต่างกับ Prettier พอสมควร โดยสามารถผ่านชุดทดสอบของ Prettier ได้เพียง 85% เท่านั้น แต่เมื่อต้นเดือนพฤศจิกายนที่ผ่านมาทาง Prettier ก็หาเงินจากสปอนเซอร์ต่างๆ มาตั้งรางวัล 22,550 ดอลลาร์ให้กับโครงการที่สามารถอิมพลีเมนต์ code formatter ที่ผ่านชุดทดสอบของ Prettier ได้เกิน 95% โดยเขียนโค้ดด้วยภาษา Rust และทางโครงการ Biome ก็เพิ่มฟีเจอร์อย่างรวดเร็วจนผ่านชุดทดสอบได้ 96% ได้รับรางวัลไปหลังการประกาศรางวัลเพียงสามสัปดาห์
โครงการ Wasmer ประกาศนำ SpiderMonkey มาทำโครงการ WinterJS รันไทม์สำหรับรัน Service Worker แบบเดียวกับ Cloudflare Workers, Deno Deploy, หรือ Vercel โดยอาศัยการอิมพลีเมนต์ API จากมาตรฐาน wintercg
เรื่องจาก Wasmer ต้องการให้โค้ดรันผ่าน WASM ได้ด้วย จึงต้องเลือกใช้เทคโนโลยีที่รองรับการคอมไพล์ไปยัง WASM ได้ด้วย ตัวโค้ดหลักของ WinterJS ใช้ SpiderMonkey ผ่านทาง Rust API ของโครงการ spiderfire
ตัวโครงการ WinterJS สามารถรันผ่านคำสั่ง wasmer
ตามปกติ หรือจะรันแบบเนทีฟผ่านทางคำสั่ง cargo
ของ Rust ก็ได้
ที่มา - Wasmer
Cloudflare ร่วมกับ Vercel ประกาศสนับสนุน Socket API มาตรฐานของ Web-interoperable Runtimes Community Group (wintercg) เพื่อเปิดทางให้แอปพลิเคชั่นนอกเบราว์เซอร์ที่ต้องการเชื่อมต่อบริการภายนอก
ตอนนี้รันไทม์ต่างๆ มักมี API แตกต่างกันไป เช่น net
และ tls
ของ NodeJS ขณะที่ Deno ก็มี API ของตัวเองต่างไปทำให้แอปพลิเคชั่นต้องแก้โค้ดไปมา
Cloudflare นำมาตรฐาน Socket API นี้มาใช้งานใน Cloudflare Workers ของตัวเอง โดยชูประเด็นว่าสามารถเลือกใช้งาน TLS ได้โดยง่าย และแนวทางใช้งานสำคัญของไลบรารีนี้คือการเชื่อมต่อฐานข้อมูล เช่น MySQL หรือ PostgreSQL จากในรันไทม์
Bun รันไทม์จาวาสคริปต์ ออกเวอร์ชัน 1.0 ตามที่ประกาศไว้ ของใหม่ที่เพิ่มเข้ามาจากเวอร์ชัน 0.8 คือรองรับการรันเฟรมเวิร์คยอดนิยม Next.js, Astro, Nest.js แล้ว
Bun เป็นรันไทม์ที่ออกแบบมาให้ใช้แทน Node.js ได้ทันที (drop-in replacement) สามารถนำแอพที่เขียนบน Node.js และแพ็กเกจ npm มาใช้ทำงานได้เลย จุดเด่นของมันคือความเร็วที่เหนือกว่า 4 เท่า ยิ่งถ้าเขียนโค้ดมาเป็น TypeScript ที่ต้องแปลง (transpile) มาเป็น JavaScript ก่อนรัน ยิ่งเห็นความแตกต่างมากขึ้นอีก เพราะ Bun มีตัว transpiler ฝังมาในรันไทม์เลย สามารถรัน TypeScript ได้ในตัวเช่นเดียวกับ JavaScript
David Heinemeier Hansson (@dhh) ผู้ร่วมก่อตั้ง Basecamp และผู้สร้าง Ruby on Rails ประกาศถอดภาษา TypeScript ออกจากโครงการ Turbo ที่เร่งความเร็วหน้าเว็บด้วยการลดการโหลดจากการกดลิงก์หรือส่งข้อมูลฟอร์ม
Hansson ระบุในประกาศว่าเขาไม่เคยชอบ TypeScript ตั้งแต่แรก และไม่ชอบตลอดที่ใช้งานมา 5 ปี แต่กลับชอบ JavaScript มากกว่าและนับว่าเป็นภาษาที่ชอบเป็นรองเพียง Ruby เท่านั้น และข้อเสียต่างๆ ของ JavaScript ก็ถูกแก้ไปเยอะแล้ว โดยเฉพาะระบบ class ขณะที่ภาษา TypeScript นั้นเพิ่มขั้นตอนการคอมไพล์เข้ามาและบังคับใช้ type จนวุ่นวายและสุดท้ายในเคสยากๆ ก็ต้องใช้ any
Bun รันไทม์จาวาสคริปต์คู่แข่ง NodeJS ออกเวอร์ชั่น 0.8 หลังจากออกเวอร์ชั่นแรกมาปีกว่าๆ พร้อมกับประกาศว่าจะออกเวอร์ชั่น 1.0 วันที่ 7 กันยายนนี้
ในเวอร์ชั่น 0.8 นี้มีฟีเจอร์สำคัญคือตัว debugger เมื่อรัน bun ด้วยออปชั่น --inspect
จะรัน HTTP server ในพอร์ตที่ไม่มีการใช้งานเพิ่มขึ้นมาเพื่อให้เชื่อมต่อ debugger เข้าไปได้ มีฟีเจอร์ครบถ้วนทั้งการตั้ง breakpoint, ดูค่าในตัวแปรต่างๆ, และการรันแบบ step-by-step
นอกจากฟีเจอร์ของ Bun เองแล้วก็ยังปรับปรุงการซัพพอร์ตไลบรารีและเฟรมเวิร์คต่างๆ เช่น SvelteKit, Nuxt, OpenAI เป้นต้น
ที่มา - Bun
Mozilla โชว์ประสิทธิภาพของ Firefox Nightly ในช่วงประมาณ 2 เดือนที่ผ่านมา ว่าสามารถเอาชนะ Chrome ได้แล้วในเบนช์มาร์ค SunSpider ที่ใช้วัดประสิทธิภาพของการรัน JavaScript บนเบราว์เซอร์
ข้อมูลจากหน้าเว็บ Are We Fast Yet ของทีม Firefox เอง ชี้ว่า Firefox ปรับปรุงประสิทธิภาพของ SunSpider ในช่วงปลายเดือนมิถุนายน 2023 ลดระยะเวลาการรันเบนช์มาร์คลงจากราว 160ms มาเหลือ 135ms และในช่วงล่าสุดขยับได้เกือบ 125ms แล้ว ในขณะที่ Chrome ค่อนข้างอยู่ตัวที่ราว 150-155ms
Bun รันไทม์จาวาสคริปต์ออกเวอร์ชั่น 0.7 โดยตัว Bun นั้นมีทั้ง runtime, bundler, transpiler, และ package manager โดยชูจุดแข็งที่ประสิทธิภาพดีกว่า NodeJS มาก ในเวอร์ชั่นล่าสุดก็หันมาปรับปรุงการทำงานร่วมกับโค้ด NodeJS เดิมพร้อมกับเพิ่มโหมดประหยัดแรม
เนื่องจาก API ของ Bun ยังไม่เท่ากับ NodeJS ทำให้ไม่สามารถรันเฟรมเวิร์คยอดนิยมหลายตัวบน Bun ในเวอร์ชั่นนี้ก็รองรับ Vite เพิ่มเข้ามาในระดับทดลอง สำหรับ API ที่เพิ่มเข้ามา เช่น Worker
สำหรับการรันโค้ดแยกออกจาก main thread เพื่อเตรียมรองรับ API worker_threads
ของ NodeJS, หรือ AsyncLocalStorage
ที่เป็น API จำเป็นสำหรับ NextJS
Deno รันไทม์คู่แข่ง NodeJS ออกเวอร์ชั่น 1.34 โดยเพิ่มฟีเจอร์สำคัญคือการคอมไพล์โปรแกรมเป็นไบนารีไฟล์เดียวให้ครอบคลุมยิ่งขึ้น
เดิม Deno รองรับคำสั่งคอมไพล์ตั้งแต่เวอร์ชั่น 1.6 แต่ก่อนหน้านี้ไม่รองรับการคอมไพล์โปรแกรมที่ดึงไลบรารีจาก npm ในเวอร์ชั่นนี้ก็รองรับแล้วทำให้สามารถใช้งานได้หลากหลายขึ้น ข้อดีของการคอมไพล์ทำให้สามารถนำโปรแกรมไปรันเครื่องอื่นได้สะดวกขึ้น แบบเดียวกับโปรแกรมภาษา Go ที่มักส่งไบนารีไฟล์เดียวไปรันได้เลย นอกจากนี้ยังมีข้อดีคือเวลาเริ่มรันโปรแกรมสั้นลงด้วย
Bun รันไทม์คู่แข่งก็เพิ่งรองรับการคอมไพล์ในเวอร์ชั่นล่าสุด
Bun รันไทม์ JavaScript ที่เพิ่งเปิดตัวเมื่อปีที่แล้ว ออกเวอร์ชั่น 0.6.0 โดยมีความสามารถสำคัญคือสร้างไฟล์ executable แยกไปรันได้โดยไม่ต้องการไลบรารีภายนอกเพิ่มเติม
โครงสร้างภายในที่เปลี่ยนไป คือทาง Bun สร้าง bundler ขึ้นใหม่เอง โดยยังคงชูความเร็วว่า build เร็วกว่า Webpack 5 ถึง 224 เท่าตัว เพราะตัว bundler แปลงโค้ด (transpile) ในตัวพร้อมใช้งาน ไม่ต้องไปแปลงใหม่อีกรอบ นักพัฒนาสามารถเขียนปลั๊กอินให้ bundler และ runtime ได้ด้วย API เดียวกัน
ความเปลี่ยนแปลงอื่นๆ มีอีกจำนวนมาก เช่น รองรับ TypeScript 5.0, เพิ่ม API ของ NodeJS มากขึ้นหลายตัว และรองรับ Web API เพิ่มเติม นอกจากนี้ยังแก้บั๊กจำนวนมาก
Netlify ผู้ให้บริการคลาวด์สำหรับพัฒนาเว็บเป็นหลักประกาศเข้าซื้อบริษัท Gatsby ผู้พัฒนาเฟรมเวิร์คโอเพนซอร์สชื่อดังมักใช้พัฒนาเว็บแบบ static หรือใช้เชื่อมโหลดข้อมูลจาก CMS ตัวอื่นๆ อีกที
ตัว Gatsby นั้นแม้จะใช้รันที่ไหนก็ได้แต่ก็มีบริการคลาวด์ของตัวเองอยู่ก่อนแล้ว ทำให้ทับซ้อนกันบ้าง ส่วนตัว Netify นั้นให้บริการคลาวด์ที่ทำงานร่วมกับเฟรมเวิร์คยอดนิยมต่างๆ ได้
ทาง Gatsby ยืนยันว่าทีมงานจะยังพัฒนา Gatsby เป็นโอเพนซอร์สต่อไป ส่วนบริการคลาวด์ต่างๆ จะกลายเป็นส่วนหนึ่งของบริการคลาวด์ของ Netlify
ที่มา - Gatsby
Astro เว็บเฟรมเวิร์คคู่แข่ง NextJS แต่เน้นเว็บโหลดเร็ว ออกเวอร์ชั่น 2.0 โดยเพิ่มฟีเจอร์หลายอย่าง เช่น
โครงการ Deno รันไทม์จาวาสคริปต์ ออกเวอร์ชัน 1.28 มีของใหม่ที่สำคัญคือรองรับโมดูล npm ของโครงการ Node.js ตามที่ประกาศไว้ ทำให้เราสามารถอิมพอร์ตโมดูล npm ที่มีมหาศาล 1.3 ล้านโมดูลมาใช้กับ Deno ได้
การใช้งาน npm ของ Deno ไม่จำเป็นต้องสั่ง npm install เพราะโมดูลจะถูกติดตั้งตอนรันโปรแกรมครั้งแรก, ไม่ต้องมีไฟล์ package.json และไม่ต้องมีโฟลเดอร์ node_modules เพราะโมดูลจะถูกแคชในไดเรคทอรี global แทน
Redmonk บริษัทวิเคราะห์ข้อมูลนักพัฒนา รายงานอันดับภาษาโปรแกรมยอดนิยม ของไตรมาสที่ 3 ปี 2022 โดยใช้ข้อมูลอ้างอิงจาก GitHub และ Stack Overflow (ซึ่ง Redmonk บอกว่าหากภาษาที่คิดว่าน่าจะติด แต่ไม่ติดอันดับ ก็อาจเพราะแพลตฟอร์มอันใดอันหนึ่งไม่มีภาษานี้)
ในอันดับต้น ๆ นั้นแทบไม่มีการขยับตำแหน่ง แต่มีอันดับที่น่าสนใจ เช่น TypeScript ซึ่งได้รับความนิยมเพิ่มมาเรื่อย ๆ เนื่องจากนำไปใช้ในงานได้หลากหลาย ส่วนภาษา Go ก็ไม่สามารถไต่อันดับขึ้นมาที่เลขหลักเดียว ซึ่งเป็นทิศทางเดียวกับ Kotlin และ Rust
รายชื่ออันดับทั้งหมดเป็นดังนี้
ไลบรารี Axios สำหรับการเชื่อมต่อ HTTP ไปยังเซิร์ฟเวอร์อื่นๆ ที่นิยมในหมู่นักพัฒนาที่ใช้ Node.JS ออกเวอร์ชั่น 1.0 ซึ่งเป็นเวอร์ชั่นเสถียรตัวแรก ใช้เวลากว่า 6 ปีหลังจากออกเวอร์ชั่นแรกเมื่อปี 2016
โครงการไลบรารีโอเพนซอร์สจำนวนมากมักออกเวอร์ชั่นก่อนหน้าเวอร์ชั่นเสถียรมาเรื่อยๆ และประกาศเวอร์ชั่นเสถียรโดยปรับจากเวอร์ชั่นล่าสุดไม่มากนัก แต่ Axios ออกเวอร์ชั่นก่อนหน้านี้คือ 0.27.2 มาตั้งแต่เดือนเมษายน และออกเวอร์ชั่น 1.0 alpha1 มาเมื่อเดือนมิถุนายนก่อนจะออกเวอร์ชั่นจริงในสัปดาห์นี้ โดยมีความเปลี่ยนแปลงค่อนข้างมาก
Cloudflare เปิดซอร์สโครงการ workerd ที่เป็นแกนหลักของบริการ Cloudflare Workers บริการแบบ serverless ที่ Cloudflare เปิดตัวมาตั้งแต่ปี 2017 แม้ว่าโดยตัวมันเองจะใช้จาวาสคริปต์แต่ก็มี API เฉพาะของตัวเองทำให้ไม่สามารถนำโค้ดไปรันที่อื่นได้
ก่อนหน้านี้ Cloudflare เคยปล่อยโครงการ Miniflare สำหรับจำลอง API ของ Workers เพื่อนักพัฒนามาก่อนแล้วแต่ก็ไม่ตรงกันนัก โครงการ workerd จะทำให้นักพัฒนาสามารถใช้งานรันไทม์ที่มีพฤติกรรมตรงกันแทบทุกจุด (bug-for-bug) กับ Workers บนคลาวด์ของ Cloudflare ทำให้นักพัฒนาสามารถนำโค้ดไปรันบนเซิร์ฟเวอร์ของตัวเองได้จริงๆ
CircleCI บริษัทซอฟต์แวร์ด้าน continuous integration (CI) สรุปสถิติการใช้งานของลูกค้าจำนวน 2 ล้านคน ให้เห็นกันว่าภาพรวมของวงการ software delivery ในปัจจุบันเป็นอย่างไร
สถิติหนึ่งที่น่าสนใจคือ ภาษาโปรแกรมยอดนิยมที่ถูกใช้งาน build ผ่านระบบ workflow ของ CircleCI ปรากฏว่าแชมป์เก่า JavaScript ถูกโค่นซะแล้ว กลายเป็น TypeScript ที่มาแรงจนแซงหน้าขึ้นเป็นเบอร์หนึ่งแทน (JavaScript ตกเป็นที่ 2, อันดับ 3 Ruby, อันดับ 4 Python, อันดับ 5 Go)
CircleCI บอกว่าความนิยมของ TypeScript ที่เป็นการแก้ปัญหาของ JavaScript โดยเพิ่มแนวคิดเรื่องชนิดของตัวแปร (type) เป็นที่ชัดเจนอยู่แล้ว เพราะช่วยให้นักพัฒนาหาบั๊กได้ง่ายขึ้นตั้งแต่ตอนเขียน (ใช้ IDE ตรวจ) หรือตอนคอมไพล์ แทนที่จะเป็นตอนรัน
Jarred Sumner นักพัฒนา Front End ที่หันมาพัฒนารันไทม์จาวาสคริปต์ Bun โดยชูจุดแข็งความเร็วเหนือกว่ารันไทม์ยอดนิยม ประกาศเปิดบริษัท Oven ที่จะเป็นผู้พัฒนาหลักของ Bun
Bun ได้รับความนิยมอย่างสูงในเวลาอันสั้น ตอนนี้มีดาวบน GitHub แล้ว 32,000 ดาว พร้อมกับสมาชิกใน Discord อีกถึง 14,000 คน ตอนนี้เป้าหมายการพัฒนาคือการออกรุ่นเสถียรภายใน 6 เดือนข้างหน้า
ตัวบริษัท Oven ได้รับทุนมาแล้ว 7 ล้านดอลลาร์ และกำลังรับสมัครนักพัฒนาเพิ่มเติม โมเดลรายได้ของ Oven จะเปิดบริการคลาวด์ของตัวเอง รูปแบบน่าจะคล้าย Deno Deploy ที่พัฒนารันไทม์เหมือนกัน
ที่มา - Oven.sh
Deno โครงการรันไทม์จาวาสคริปต์ประกาศแผนการพัฒนาเพิ่มเติม โดยจุดใหญ่ที่สุดคือการรองรับแพ็กเกจต่างๆ จาก npm ทำให้สามารถใช้แพ็กเกจแบบเดียวกับใน NodeJS ได้ แม้ว่าภายในแล้ว Deno จะต่างกับ NodeJS พอสมควร
เว็บเฟรมเวิร์ค Astro ประกาศออกเวอร์ชั่น 1.0 หลังเปิดตัวมา 16 เดือน และพัฒนาจากเดิมที่มองว่าเป็น static site generator สำหรับสร้างเว็บที่ไม่มีความเปลี่ยนแปลงใดๆ เป็นหลัก มาเป็นเฟรมเวิร์คเต็มรูปแบบ แข่งขับกับเฟรมเวิร์คยอดนิยม เช่น NextJS
ในเวอร์ชั่น 1.0 ความเปลี่ยนแปลงสำคัญ ได้แก่