Deno โครงการรันไทม์จาวาสคริปต์ประกาศแผนการพัฒนาเพิ่มเติม โดยจุดใหญ่ที่สุดคือการรองรับแพ็กเกจต่างๆ จาก npm ทำให้สามารถใช้แพ็กเกจแบบเดียวกับใน NodeJS ได้ แม้ว่าภายในแล้ว Deno จะต่างกับ NodeJS พอสมควร
เว็บเฟรมเวิร์ค Astro ประกาศออกเวอร์ชั่น 1.0 หลังเปิดตัวมา 16 เดือน และพัฒนาจากเดิมที่มองว่าเป็น static site generator สำหรับสร้างเว็บที่ไม่มีความเปลี่ยนแปลงใดๆ เป็นหลัก มาเป็นเฟรมเวิร์คเต็มรูปแบบ แข่งขับกับเฟรมเวิร์คยอดนิยม เช่น NextJS
ในเวอร์ชั่น 1.0 ความเปลี่ยนแปลงสำคัญ ได้แก่
Douglas Crockford โปรแกรมเมอร์ผู้สร้าง JSON ในปี 2000 ออกมาให้สัมภาษณ์วิจารณ์ JavaScript ว่าพัฒนาช้ามากในช่วง 20 ปีที่ผ่านมา จากที่เขาเคยเป็นกองเชียร์ JavaScript และพยายามแก้ปัญหาหลายๆ อย่าง ก็ประสบความสำเร็จน้อยมากใน ECMAScript 5 ที่เป็นเวอร์ชันใหญ่เมื่อปี 2009 จนตอนนี้เขามองว่า JavaScript เป็นภาษาไดโนเสาร์ที่ไม่ทันโลก และควรเลิกใช้กันดีกว่า (The best thing we can do today to JavaScript is to retire it.)
Crockford ยังให้ความเห็นว่าชุมชน JavaScript พยายามพัฒนาตัวภาษาให้บวมขึ้นกว่าเดิม แทนที่จะพัฒนามันให้ดีกว่าเดิม อย่างไรก็ตาม ปัญหาคือเราไม่มีภาษาอื่นมาใช้ทดแทนแนวทาง JavaScript แก้แก้โครงของ DOM ในเบราว์เซอร์ ซึ่งก็ไม่ง่ายเลยที่จะสร้างภาษาใหม่ขึ้นมาแล้วให้เบราว์เซอร์ทุกตัวยอมรับ
เขายังแสดงความเห็นต่อภาษาโปรแกรมในภาพรวมว่า ภาษาส่วนใหญ่ที่เราใช้กันถูกออกแบบมาตั้งแต่ยุคโพรเซสเดียวบนคอมพิวเตอร์เครื่องเดียว ซึ่งโลกเปลี่ยนจากนั้นไปมากแล้ว
Jarred Sumner นักพัฒนา Front End เปิดตัวโครงการ Bun รันไทม์จาวาสคริปต์ที่พยายามแข่งกับ Node และ Deno โดยชูจุดเด่นที่ความเร็วเหนือกว่ารันไทม์ยอดนิยมในหลายๆ ด้าน มันมาพร้อมกับตัวจัดการแพ็กเกจและตัวแปลงโค้ด (transpile) จาก TypeScript เป็นจาวาสคริปต์ในตัว
Bun พัฒนาด้วยภาษา Zig ตัว Summer ผู้พัฒนาระบุว่าเขาออปติไมซ์เพิ่มเติมหลายอย่างเพื่อให้การทำงานเร็วขึ้น โดยเฉพาะการเริ่มรัน และการติดตั้ง dependencies ที่อาศัยการออปติไมซ์การเรียก system call จนประสิทธิภาพดีกว่าตัวจัดการแพ็กเกจอื่นๆ นับสิบเท่า ระบบฐานข้อมูลแพ็กเกจใช้ไฟล์ไบนารีแทน JSON เพื่อลดเวลาการ parse
บริษัท Deno ของผู้สร้าง Node.js ที่หันมาทำเฟรมเวิร์คจาวาสคริปต์ที่เขียนด้วย Rust ตั้งแต่ปี 2020 ประกาศข่าวระดมทุน Series A มูลค่า 21 ล้านดอลลาร์จากนักลงทุนหลายราย นำโดย Sequoia Capital และมี Nat Friedman ผู้ร่วมก่อตั้ง Xamain และอดีตซีอีโอ GitHub มาร่วมลงทุนด้วย
ตัวเฟรมเวิร์ค Deno จะยังเป็นโอเพนซอร์สต่อไปเช่นเดิม แต่โมเดลธุรกิจของบริษัท Deno คือ Deno Deploy ระบบคลาวด์ที่ใช้รัน JavaScript, TypeScript, WebAssembly ประสิทธิภาพสูง กินทรัพยากรน้อย ราคาถูกกว่าการใช้สถาปัตยกรรมคอนเทนเนอร์ที่นิยมกันในปัจจุบัน
บริษัท Meta ประกาศยกโครงการ Jest เฟรมเวิร์คสำหรับรันทดสอบจาวาสคริปต์ ให้เป็นของมูลนิธิ OpenJS Foundation
Jest ถือเป็นเฟรมเวิร์คสำหรับรันทดสอบยอดนิยมตัวหนึ่ง มียอดดาวน์โหลดสัปดาห์ละ 17 ล้านครั้ง ถูกเขียนขึ้นตั้งแต่ปี 2011 ในชื่อว่า "jst" โดยใช้กับฟีเจอร์ Facebook Chat (ในขณะนั้นยังไม่เรียก Messenger) ที่ถูกเขียนใหม่เป็นจาวาสคริปต์ แต่บริษัทพบว่าไม่มีเฟรมเวิร์คสำหรับจาวาสคริปต์ที่ดีพอ จึงสร้างขึ้นมาเอง
Netlify ผู้ให้บริการคลาวด์สำหรับการพัฒนาเว็บ เปิดบริการ Netlify Edge Functions บริการ serverless โดยใช้ Deno เป็นเอนจินภายในที่อาจจะใช้สำหรับรันงานเฉพาะทาง เช่น เรนเดอร์ภาพ, แก้ไขคอนเทนต์ก่อนส่งถึงผู้ใช้, ทดสอบผู้ใช้แบบ A/B ไปจนถึงการรันเฟรมเวิร์ค front-end เต็มรูปแบบ
ทาง Netlify เคยเปิดทดสอบบริการรูปแบบเดียวกันมาก่อนแล้วในชื่อ Edge Handlers แต่ใช้เอนจินเฉพาะของตัวเอง แบบเดียวกับผู้ให้บริการคลาวด์รายอื่น แต่ปรากฎว่าไม่ได้รับความนิยมเพราะนักพัฒนาใช้เฟรมเวิร์คยอดนิยมไม่ได้เลย รอบบนี้การเปิดตัว Edge Functions จึงหันมาใช้เอนจิน Deno แล้วทดสอบกับเฟรมเวิร์คดังๆ ได้แก่ Astro, 11ty, Hydrogen, Next.js, Nuxt, Remix, และ SvelteKit
React ออกเวอร์ชัน 18.0 ถือเป็นการออกเวอร์ชันใหญ่ครั้งแรกนับจาก React 17.0 ในปี 2020 ที่ไร้ฟีเจอร์ใหม่ รอบนี้จึงมีฟีเจอร์ใหญ่สะสมมาออกทีเดียวหลายอย่าง
ฟีเจอร์สำคัญที่สุดคือ Concurrent React เป็นการเปิดให้มี UI หลายเวอร์ชันในเวลาเดียวกัน (concurrency) โดย Concurrent React เป็นการปรับกลไกภายในของ React เองให้รองรับฟีเจอร์ใหม่สาย concurrency ต่างๆ ซึ่งนักพัฒนาสามารถเลือกใช้ได้แบบ opt-in
ทีมพัฒนา React บอกว่าในระยะใกล้ นักพัฒนาแอพจะเลือกใช้ Concurrent หรือไม่ก็ได้ แต่ในระยะยาวแล้ว หลายส่วนใน React จะมุ่งไปทาง Concurrent มากขึ้น
ของใหม่อย่างอื่นใน React 18 ได้แก่
RIAEvangelist นักพัฒนาโมดูล node-ipc ที่ได้รับความนิยมสูง ใส่โค้ดเพื่อลบไฟล์ผู้ใช้หากตรวจสอบไอพีแล้วพบว่าผู้ใช้อยู่ในรัสเซียหรือเบลารุส ไม่ว่าผู้ใช้จะติดตั้งโมดูลโดยตรงหรือติดตั้งจาก dependency โมดูลอื่นๆ ก็ตาม
ทาง GitHub ออกมาประกาศว่าเวอร์ชั่น 10.1.1 และ 10.1.2 ที่ผู้ดูแลใส่โค้ดเข้ามานี้เป็นช่องโหว่ร้ายแรงระดับวิกฤติ ตอนนี้ทาง NPM ได้ลบเวอร์ชั่นเหล่านี้ออกแล้ว และมีการอัพเดตเป็นเวอร์ชั่น 10.1.3
ข้อจำกัดประการสำคัญของ JavaScript คือการไม่กำหนดชนิดของตัวแปร (type) แบบตายตัว (static typing) เมื่อ JavaScript ได้รับความนิยมเพิ่มขึ้นเรื่อยๆ จึงมีคนพยายามแก้ปัญหานี้ด้วยการประดิษฐ์ภาษาหรือเครื่องมือใหม่ๆ ที่เป็น JavaScript แบบมี type เข้ามา (เช่น TypeScript, Closure Compiler หรือ Flow) เพื่อจัดระเบียบการเขียนโค้ดให้มีโครงสร้างมากขึ้น
แนวทางของภาษาแบบ TypeScript คือให้มนุษย์เขียนโค้ดด้วยภาษาใหม่ที่มีระเบียบขึ้น จากนั้นใช้เครื่องมือ "แปลง" (ในที่นี้คือ transpiler) ภาษาใหม่กลับมาเป็น JavaScript อีกทีหนึ่ง
Russ Cox วิศวกรกิตติมศักดิ์ (Distinguished Engineer) ของกูเกิล และทีมพัฒนาภาษา Go เขียนบล็อคถึงประเด็นที่นักพัฒนาโมดูล color.js และ faker.js ใส่โค้ดทำให้แอปอื่นๆ พังโดยจงใจ ว่ายังดีที่โค้ดนี้ไม่ได้ทำอะไรมุ่งร้ายมากไปกว่าทำให้แอปพังเพราะโค้ดพิมพ์ขยะจนเต็มหน้า แต่หลังจากเหตุการณ์นี้ NPM ควรปรับปรุงเพื่อรับมือปัญหาแบบนี้ในอนาคต
ผู้ใช้ GitHub ชื่อบัญชี Marak เป็นผู้ดูแลโครงการโอเพนซอร์สจำนวนมากและช่วงสัปดาห์ที่ผ่านมาเขาใส่โค้ดรัน infinite loop เข้าไปยังโครงการ color.js (4,300 stars) และ faker.js (795 stars) ส่งผลให้โมดูลและแอปอื่นๆ ที่ใส่โมดูลเหล่านี้เป็น dependency ไม่สามารถทำงานได้ หน้าจอจะค้างและพิมพ์ขยะออกมาไม่หยุด
Marak ไม่ได้แถลงบอกเหตุผลที่เขาทำแบบนี้ไว้โดยตรงแต่เขาแสดงภาพ Aaron Swartz โปรแกรมเมอร์นักกิจกรรมที่ฆ่าตัวตาย หลังถูกจับเนื่องจากเอาคอมพิวเตอร์ไปเชื่อมต่อเครือข่ายของ MIT เพื่อดาวน์โหลดรายงานวิทยาศาสตร์
เฟรมเวิร์ค AngularJS เวอร์ชันแรก 1.x ที่เปิดตัวตั้งแต่ปี 2010 หมดระยะซัพพอร์ตแล้วเมื่อสิ้นปี 2021 ถือเป็นการปิดตำนาน AngularJS เวอร์ชันแรกที่เขียนด้วยภาษา JavaScript
เมื่อปี 2015 กูเกิลจับมือกับไมโครซอฟท์สร้างเฟรมเวิร์ค Angular (ไม่มี JS) ด้วยภาษา TypeScript ขึ้นมาใหม่แทนการพัฒนา AngularJS เวอร์ชันแรกต่อ และยังใช้งานมาจนถึงปัจจุบัน (เวอร์ชันล่าสุดขณะที่เขียนคือ 13.x ออกเมื่อปลายปี 2021)
การที่ Angular ทั้งสองเวอร์ชันมีชื่อคล้ายกัน (แต่ใช้ด้วยกันไม่ได้) ทำให้เกิดความสับสนไม่น้อย เพื่อให้แยกแยะได้ง่าย หลายคนเลือกเรียกโครงการใหม่ว่า Angular 2 หรือ Angular 2+ แทน
Ruby on Rails ออกเวอร์ชันใหญ่ 7.0 ซึ่งมีการเปลี่ยนแปลงสำคัญ 2 เรื่องคือ ไม่ต้องผูกกับโลกของ Node.js อีกแล้ว และเปลี่ยนระบบ front-end มาเป็นตัวใหม่คือ Hotwire
David Heinemeier Hansson หรือ DHH ผู้สร้าง Rails อธิบายว่าโครงสร้างของภาษา JavaScript ในอดีตเป็นปัญหาของโปรแกรมเมอร์มาก ทางออกจึงเป็นการเขียนภาษาอื่นแล้วแปลงเป็น JavaScript (เรียกว่า transpiling เช่น CoffeeScript หรือ Babel) ที่ช่วยให้เขียนโค้ดง่ายขึ้น แต่ก็ต้องแลกมาด้วยความซับซ้อนที่เพิ่มขึ้น
บริษัท Vercel ผู้สร้างเฟรมเวิร์คจาวาสคริปต์ชื่อดัง Next.js ประกาศระดมทุนซีรีส์ D จำนวน 150 ล้านดอลลาร์ ทำให้บริษัทมีมูลค่า 2.5 พันล้านดอลลาร์
ธุรกิจของ Vercel คือเป็นแพลตฟอร์มสำหรับพัฒนาเว็บ front-end ที่รองรับเฟรมเวิร์คหลากหลาย (ไม่ใช่แค่ Next.js แต่รวมถึงตัวอื่นๆ เช่น Vue.js, Ember, Angular) โดยระบบของ Vercel จะรองรับการโฮสต์ไฟล์แบบ serverless นักพัฒนาไม่ต้องดูแลระบบเอง (วัดตามจำนวนครั้งที่เรียกใช้งาน) จัดการเรื่องความปลอดภัยและ CDN ที่กระจายอยู่ทั่วโลก (edge network) เพื่อให้เว็บไซต์ตอบสนองรวดเร็วต่อผู้ใช้ในแต่ละพื้นที่ นักพัฒนาสนใจแค่การพัฒนาเว็บอย่างเดียว ไม่ต้องมีภาระเรื่องการจัดการโครงสร้างพื้นฐานอื่นๆ
ไลบรารี coa หรือ Command-Option-Argument เป็นไลบรารีสำหรับอ่านคำสั่ง command line ยอดนิยมบน npm ถูกแฮกและคนร้ายสามารถปล่อยเวอร์ชั่นมุ่งร้าย 2.0.3, 2.0.4, 2.1.1, 2.1.3, และ 3.1.3 ให้เหยื่อดาวน์โหลดผ่าน npm ได้สั้นๆ ไม่กี่ชั่วโมง
อัตราการใช้งาน coa สูงมาก มียอดดาวน์โหลดเกือบ 9 ล้านครั้งต่อสัปดาห์ ช่วงเวลาไม่กี่ชั่วโมงก็อาจจะถูกดาวน์โหลดไปแล้วนับแสนครั้ง
ในผลการสำรวจนักพัฒนาของ Stack Overflow ประจำปี 2021 ที่เพิ่งออกมาเมื่อต้นเดือนนี้ มีเรื่องที่เซอร์ไพร์สคือ เว็บเฟรมเวิร์คที่นักพัฒนา "รัก" มากที่สุด (most loved web framework) มีแชมป์ 2 รายได้คะแนนเท่ากันคือ ASP.NET Core และ Svelte
กรณีของ ASP.NET Core ไม่ใช่เรื่องน่าแปลกใจ เพราะเป็นแชมป์เก่าของปี 2020 อยู่ก่อนแล้ว แต่ Svelte เป็นเฟรมเวิร์คใหม่ที่ยังไม่เคยติดอันดับใดๆ มาก่อนในการสำรวจปี 2020 กลับโผล่เข้าชาร์ทมาพรวดเดียวครองอันดับหนึ่งร่วมได้ทันที ทำให้เกิดกระแสความสนใจในโครงการ Svelte เพิ่มตามมา
บทความนี้จะแนะนำข้อมูลเบื้องต้นของ Svelte ว่ามีอะไรน่าสนใจ ถึงทำให้ผงาดขึ้นมาเป็นเฟรมเวิร์คที่นักพัฒนารักที่สุดได้อย่างรวดเร็ว
Redmonk บริษัทวิเคราะห์ข้อมูลนักพัฒนา ออกรายงานอันดับภาษาโปรแกรมยอดนิยมประจำไตรมาสสามปี 2021 โดยใช้แหล่งข้อมูลจาก GitHub (จำนวนโค้ด/แกนนอน) และ Stack Overflow (จำนวนการพูดคุย/แกนตั้ง) มาผสมกัน
ผลจากการจัดอันดับของ Redmonk ไม่ต่างจากอันดับของสำนักอื่นๆ (เช่น JetBrains หรือ GitHub) เพราะ Top 3 เป็นภาษายอดนิยมชุดเดียวกัน โดยอันดับหนึ่งคือ JavaScript ตามด้วย Python และ Java เป็นอันดับสองร่วม
JetBrains ออกรายงานสำรวจข้อมูลนักพัฒนาประจำปี 2021 จากผู้ตอบแบบสอบถาม 31,743 คนใน 183 ประเทศ มีข้อมูลที่น่าสนใจดังนี้
โครงการ Next.js เฟรมเวิร์คสำหรับการพัฒนาเว็บ ReactJS แบบ sever-side rendering (SSR) โดยมีฟีเจอร์สำคัญ ได้แก่
กูเกิลออก Chrome 91 ที่ระบุว่าเร็วขึ้นสูงสุด 23% อันเป็นผลมาจากคอมไพเลอร์จาวาสคริปต์ตัวใหม่ Sparkplug
เดิมทีเอนจิน V8 ของ Chrome มีคอมไพเลอร์ 2 ระดับคือ Ignition ที่เริ่มแปลงจาวาสคริปต์ชั้นแรกเป็น byte code และ Turbofan ทำหน้าที่ปรับแต่ง (optimize) เป็น machine code ที่มีประสิทธิภาพสูง โดยอิงจากข้อมูลที่ได้ตอนแปลง byte code มาช่วยปรับแต่ง ปัญหาของแนวทางเดิมคือ Turbofan เริ่มทำงานช้ากว่า Ignition มาก
Deno รันไทม์สำหรับรันจาวาสคริปต์บนเซิร์ฟเวอร์ คู่แข่ง NodeJS ออกเวอร์ชั่น 1.9 โดยมีฟีเจอร์ใหญ่คือการเตรียมเปลี่ยน HTTP Server ในตัว จากเดิมที่เป็นเซิร์ฟเวอร์เขียนด้วย TypeScript มาเป็นโครงการ Hyper ที่เป็นภาษา Rust (ตัว Deno เองเป็น Rust อยู่แล้ว)
การเปลี่ยนเซิร์ฟเวอร์ใหม่ทำให้ Deno จะรองรับ HTTP/2 ไปด้วย และประสิทธิภาพยังดีขึ้นถึง 48% จากการทดสอบตอบกลับด้วยข้อความ Hello World อย่างเดียว แต่ตอนนี้ฟีเจอร์นี้ยังปิดไว้เป็นค่าเริ่มต้น ต้องเปิดด้วยออปชั่น --unstable
เท่านั้น
ฟีเจอร์อื่นๆ เช่น
Deno โครงการรันไทม์จาวาสคริปต์สำหรับเซิร์ฟเวอร์คู่แข่ง Nodejs ที่สร้างโดยผู้เริ่มโครงการ Nodejs เองประกาศตั้งบริษัท Deno Company พร้อมเงินทุนประเดิม 4.9 ล้านดอลลาร์
ในบล็อคประกาศเปิดตัวบริษัท ผู้ก่อตั้ง Deno ยืนยันว่าโครงการ Deno จะเป็นโอเพนซอร์สสัญญาอนุญาต MIT ต่อไป และจะไม่กั๊กฟีเจอร์บางส่วนเอาไว้ทำการค้า (รูปแบบ open core) ที่โครงการโอเพนซอร์สจำนวนมากทำกัน แต่จะสร้างธุรกิจจากโครงการโอเพนซอร์สแทน
แม้ในการประกาศครั้งนี้จะไม่ได้ระบุว่าธุรกิจที่จะทำเงินมีอะไรบ้าง แต่ Deno ก็มีบริการ Deno Deploy บริการรันไทม์จาวาสคริปต์ที่รันบน CDN ทั่วโลกให้บริการอยู่
Alex Birsan รายงานถึงการโจมตีองค์กรขนาดใหญ่จำนวนมากด้วยการสร้างแพ็กเกจไลบรารีเลียนแบบชื่อไลบรารีในองค์กรแล้วไปวางตามบริการดาวน์โหลดไลบรารีไม่ว่าจะเป็น RubyGems, npm, หรือ PyPI
องค์กรขนาดใหญ่จำนวนมากมักมีไลบรารีเฉพาะทางของตัวเองใช้งานภายในเป็นเรื่องปกติ และหลายครั้งชื่อไลบรารีเหล่านี้ก็หลุดออกมาสู่โลกภายนอก เช่น Paypal เคยทำไฟล์ package.json ที่ใช้ภายในหลุดออกมาอยู่บน GitHub ทำให้รู้ว่าบริษัทมีการใช้งานไลบรารีภายในเช่น pplogger, auth-paypal, wurfl-paypal, analytics-paypal เป็นต้น หรือแม้แต่แอปเปิลก็เคยทำรายชื่อแพ็กเกจเหล่านี้หลุดออกมาเช่นกัน
วันที่ 4 ธันวาคม 1995 เป็นวันแรกที่ Netscape และ Sun Microsystems ประกาศเปิดตัวภาษา JavaScript ร่วมกัน เปิดโลกเข้าสู่ยุคที่เบราว์เซอร์สามารถรันโปรแกรมได้ในตัว จากเดิมเป็นเพียงโปรแกรมแสดงผลเอกสารเท่านั้น
ประกาศยังแสดงให้เห็นว่าเหตุผลของชื่อ JavaScript แม้ว่าภาษานี้จะสมบูรณ์ในตัวเอง แต่ทาง Sun ก็ระบุว่า JavaScript จะเป็นตัวเติมเต็ม Java Applet (ปลั๊กอินแสดงโปรแกรมซับซ้อนในเบราว์เซอร์ ที่ถูก Macromedia Flash ชิงตลาดไปในภายหลัง) จุดน่าสนใจเช่นทั้งสองบริษัทประกาศตั้งแต่แรกว่า JavaScript สามารถใช้งานบนเซิร์ฟเวอร์ได้ และบริษัทที่ซื้อซอร์สโค้ด Java ไปก็จะได้สิทธิ์ใช้ซอร์สโค้ด JavaScript ด้วย