บริษัท 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 ด้วย
โครงการ Deno รันไทม์ JavaScript/TypeScript ที่เขียนด้วยภาษา Rust ของผู้สร้าง Node.js เปิดตัวเวอร์ชัน 1.0 ไปเมื่อเดือนพฤษภาคม
ตอนนี้ Deno เดินทางมาถึงเวอร์ชัน 1.5 โดยปรับปรุงทั้งเรื่องฟีเจอร์และประสิทธิภาพอย่างรวดเร็ว ของใหม่ในเวอร์ชันนี้คือ Deno เปลี่ยนมาใช้คอมไพเลอร์ชื่อ swc ที่เขียนด้วยภาษา Rust เช่นกัน ทำให้ประสิทธิภาพตอนเช็คชนิดของตัวแปร (type-check) เพิ่มขึ้น 3 เท่า (หรือ 15 เท่าถ้าระบุว่าไม่ต้องเช็คเลย)
ในฝั่งของขนาดโค้ด ทีม Deno ปรับวิธีการจัดการไฟล์ bundle ใหม่ ให้ลดขนาดโค้ดลงได้มาก บาง bundle อาจมีขนาดลดลงได้ถึง 35%
Firefox ออกเวอร์ชัน 83 โดยถือเป็นรุ่นที่มีของใหม่หลายอย่าง ฟีเจอร์สำคัญคือการอัพเกรดเอนจินจาวาสคริปต์ SpiderMonkey ครั้งใหญ่ อัพเดตตัวนี้มีชื่อว่า Warp (หรือ WarpBuilder) เป็นการปรับปรุงกระบวนการทำงานของคอมไพเลอร์ just-in-time (JIT) ใหม่ ผลที่ได้คือประสิทธิภาพดีขึ้น 20% ในการโหลดหน้าเว็บ Google Docs, เฉลี่ยแล้ว 15%, ตอบสนองดีขึ้น 12% และใช้หน่วยความจำน้อยลง 8% โดยเฉลี่ย (รายละเอียดเรื่อง Warp สำหรับผู้สนใจ)
Next.js เฟรมเวิร์คเว็บ React แบบ server side render (SSR) ออกเวอร์ชั่น 10.0 โดยมีฟีเจอร์ใหม่เพิ่มขึ้นหลายอย่าง เช่น
โครงการ ReactJS ประกาศออกเวอร์ชั่น 17 ที่ระบุชัดว่าไม่มีฟีเจอร์ใหม่ แต่เป็นการปรับโครงสร้างเพื่อรองรับการอัพเกรดทีละส่วน และฟีเจอร์ใหม่ทั้งหมดถูกดันออกไปใน ReactJS 18
เดิมแอปที่พัฒนาด้วย ReactJS จะต้องอัพเกรดตัวเฟรมเวิร์คพร้อมกันทั้งแอป แต่หลายครั้งโค้ดบางส่วนไม่ได้พัฒนามานานทำให้ไม่สามารถอัพเกรดได้ ใน ReactJS 17 จะเปิดทางให้แอปสามารถดาวน์โหลด React เวอร์ชั่นเก่าขึ้นมาใช้งานบางส่วนได้ ทาง React เตรียมแอปสาธิตเอาไว้ โดยสามารถรัน React JS 17.0 ในแอปหลัก และรัน ReactJS 16.8 หรือเก่ากว่านั้นในบาง component ได้
AWS โอเพนซอร์สโครงการ Diagram Maker ไลบรารีจาวาสคริปต์สำหรับสร้างตัววาดแผนภาพ ที่แอปพลิเคชั่นจำนวนมากก็ต้องใช้งานกันอยู่แล้ว โดย AWS ระบุว่าไลบรารีที่มีอยู่เดิมไม่เหมาะกับงาน IoT เนื่องจากไลบรารีบางตัวก็เป็นระดับล่างเกินไปหรือบางตัวมี API ระดับสูงก็อินทิเกรดกับแอปพลิเคชั่นได้ยาก
Diagram Maker ของ AWS มีฟีเจอร์มาให้ในตัวค่อนข้างครบ ได้แก่
เก็บตกข่าวความเคลื่อนไหวฝั่ง React Native นะครับ ตัวโครงการ React Native ที่พัฒนาโดย Facebook รองรับเพียงแค่ 2 แพลตฟอร์มมือถือคือ Android และ iOS
แต่เมื่อปีที่แล้ว ไมโครซอฟท์อาสาเข้ามาทำ React Native for Windows โดยรองรับทั้งการสร้างแอพแบบ WPF และ UWP
Vue.js เฟรมเวิร์คจาวาสคริปต์ยอดนิยมอีกตัวประกาศออกรุ่น 3.0 One Piece หลังจากพัฒนามานานถึงสองปี มีการปรับปรุงตามข้อเสนอทั้งหมด 37 รายการ นักพัฒนาที่เกี่ยวข้องรวม 99 คน
โครงสร้างภายในของ Vue 3.0 ถูกแตกออกเป็นโมดูลย่อยๆ จำนวนมากเพื่อให้ระยะเวลาโหลดน้อยลงและการดูแลง่ายขึ้น รวมถึงการใช้ API ระดับล่างสำหรับงานเฉพาะทางก็ทำได้แล้วในเวอร์ชั่นนี้
จุดเด่นคือประสิทธิภาพการรัน Vue ดีขึ้นทุกกรณีเทียบกับ Vue 2 และการใช้แรมก็ลดลงเหลือครึ่งเดียวเท่านั้น
Moment.js ไลบรารีแสดงวันและเวลาในภาษาจาวาสคริปต์ที่ได้รับความนิยมสูง (ดาวบน GitHub มากกว่า 44,000 ดาว และยอดดาวน์โหลดสัปดาห์ละ 12 ล้านครั้ง) ประกาศหยุดพัฒนาโดยระบุเหตุผลว่าโครงสร้างเดิมไม่เหมาะกับนักพัฒนาใหม่ และตัวจาวาสคริปต์เองก็มีออปเจก์ Intl เพื่อรองรับวิธีการแสดงวันและเวลาแล้ว แต่ Moment.js ไม่รองรับ
กระบวนการหยุดพัฒนาของ Moment.js จะแก้ไขช่องโหว่ร้ายแรงต่อไป และจะเพิ่ม timezone ใหม่ๆ ตามฐานข้อมูลของ IANA แต่จะไม่มีการเพิ่มฟีเจอร์ใดๆ รวมถึงไม่มีการแก้ไขพฤติกรรมแปลกๆ (quirk) และไม่มีการออกเวอร์ชั่น 3 อีก
ทาง Moment.js แนะนำไลบรารีทดแทนหลายตัว ได้แก่
Josh Larson วิศวกร Vox Media สร้างเฟรมเวิร์ค Flareact เป็นเฟรมเวิร์คทดลองที่ได้รับแรงบันดาลใจมาจาก Next.js เพื่อให้แอปพลิเคชั่นแบบ React สามารถเรนเดอร์ด้วย Cloudflare Workers ได้
ปกติแล้ว React ออกแบบสำหรับสร้างแอปพลิเคชั่นที่เรนเดอร์ฝั่งเบราว์เซอร์ทั้งหมด หลายครั้งประสิทธิภาพบนเบราว์เซอร์ไม่ดีนัก และบริการหลายตัวที่ต้องการอ่าน HTML โดยไม่สามารถเรนเดอร์ React ได้ก็จะได้ข้อมูลไม่ครบ การทำ server side rendering (SSR) จึงเป็นฟีเจอร์สำคัญที่หลายเว็บใช้งานกัน เช่น Next.js ที่ได้รับความนิยมสูง
Bootstrap เฟรมเวิร์คสำหรับเขียนเว็บชื่อดัง ประกาศออกเวอร์ชัน 5.0 Alpha 1 มีการเปลี่ยนแปลงสำคัญคือเลิกใช้เฟรมเวิร์ค jQuery ที่ใช้มายาวนาน เปลี่ยนมาใช้โค้ด JavaScript ปกติแทน ด้วยเหตุผลว่าฟีเจอร์ของ JavaScript และเบราว์เซอร์รุ่นใหม่ๆ สามารถทดแทน jQuery ได้แล้ว
ผลของการเลิกใช้ JQuery ช่วยให้ขนาดไฟล์เว็บที่สร้างด้วย Bootstrap เล็กลง และเว็บเพจโหลดได้เร็วขึ้น ทีมงาน Bootstrap บอกว่ายังต้องปรับปรุงแก้ไขการแสดงผลอีกหลายจุดหลังถอด jQuery ออกไป ซึ่งก็จะค่อยๆ แก้ไขในรุ่นทดสอบถัดๆ ไป
Bootstrap 5 ยังเลิกซัพพอร์ต Internet Explorer แล้ว ทำให้เรียกใช้ฟีเจอร์เว็บใหม่ๆ ได้ เช่น CSS custom properties
JetBrains ผู้พัฒนา IDE และสร้างภาษา Kotlin เปิดเผยผลสำรวจ The State of Developer Ecosystem ประจำปี 2020 ซึ่งเป็นการรายงานปีที่ 4 จากการสอบถามนักพัฒนา 19,696 คน ใน 18 ประเทศ มีประเด็นที่น่าสนใจดังนี้
ทีมงานซอฟต์แวร์ของ SpaceX ตั้งกระทู้ตอบคำถามบน Reddit ให้คนทั่วไปตั้งคำถามใดๆ ก็ได้ ทำให้ทีมงานมีโอกาสเปิดเผยข้อมูลเพิ่มเติม โดยประเด็นที่สำคัญคือหน้าจอสัมผัสของยาน Dragon นั้นรันอยู่บน Chromium โดยมีไลบรารีจาวาสคริปต์แบบ reactive ที่พัฒนาขึ้นเองเป็นการภายใน โดยหน้าจอนี้ไม่เกี่ยวอะไรกับหน้าจอรถของ Tesla
ทีมงานยืนยันว่าหน้าจอบนยานไม่ได้มีอะไรเกี่ยวข้องกับเกมจำลองการเชื่อมต่อแคปซูลเข้ากับสถานีอวกาศนานาชาติ แม้จะพัฒนาโดยทีมงานเดียวกันแต่ก็เป็นโปรเจคทำเอาสนุกของทีมงานบางคนและสุดท้ายบริษัทตัดสินใจพัฒนาต่อเปิดให้คนทั่วไปเข้ามาเล่น
Ryan Dahl ผู้เริ่มโครงการ Nodejs เมื่อปี 2009 และออกจากโครงการไปเมื่อปี 2012 กลับมาพัฒนาโครงการ Deno ที่เป็นรันไทม์สำหรับรันจาวาสคริปต์นอกเบราว์เซอร์เหมือนกัน แต่พัฒนาขึ้นด้วยแนวคิดที่ต่างออกไป โดยเลือกใช้ภาษา Rust ในการพัฒนา และสร้างโครงการ rust_v8 สำหรับนำเอาเอนจิน V8 มาใช้งาน และตอนนี้ Deno ก็ออกเวอร์ชั่น 1.0 พร้อมสำหรับการใช้งานจริงแล้ว
ฟีเจอร์สำคัญของ Deno ได้แก่
โมดูล is-promise เป็นโมดูลง่ายๆ บน npm ที่ใช้ตรวจสอบว่าออปเจกต์ใดเป็น Promise บ้าง โดยตัวโมดูลเองมีความยาวเพียง 5 บรรทัดเท่านั้น (โค้ดอยู่ในภาพ) แต่การอัพเดตครั้งล่าสุดในเวอร์ชั่น 2.2.0 กลับทำให้โมดูลจำนวนมากไม่ทำงาน
ความผิดพลาดเกิดจากความพยายามซัพพอร์ต ES module แต่คอนฟิกที่ใส่มากลับไม่สมบูรณ์ ทำให้คำสั่งสำคัญๆ เช่น create-react-app
หรือ firebase-tools
ติดตั้งใหม่ไม่ได้
แพ็กเกจที่ติดตั้งไปก่อนแล้วยังคงทำงานได้ และคำแนะนำแรกๆ หลังมีปัญหานี้คือให้ย้อนกลับไปใช้เวอร์ชั่น 2.1.0 ส่วนตอนนี้ทาง is-promise ออกเวอร์ชั่น 2.2.1 ที่แก้ปัญหาแล้ว