[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-3b2Dhww_3d8DSerMLRZor8rHdLYrCPj0NigsrPPRjZs":3,"sanity-GHxTltHSDM-ky04KIJAzrhCKgmIjomqHby1FrnNTNnM":365},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":340},[6],{"_id":7,"publishedAt":8,"slug":9,"sponsored":12,"title":13},"d81860b7-7b72-4ba5-8ad5-3b77fd9a8e9b","2026-07-14T07:40:00.000Z",{"_type":10,"current":11},"slug","your-ai-is-only-as-responsible-as-you-are",null,"Your AI is only as responsible as you are",[15,21,27,33],{"_id":16,"publishedAt":17,"slug":18,"title":20},"eb5b66eb-9410-4329-83bb-22bbff39402a","2026-04-28T13:00:00.000Z",{"_type":10,"current":19},"turn-scattered-knowledge-into-trusted-intelligence","Turning scattered knowledge into trusted intelligence: Stack Internal 2026.3",{"_id":22,"publishedAt":23,"slug":24,"title":26},"369c2401-b62e-4a37-8ff8-bf603023ecad","2026-03-02T15:03:00.988Z",{"_type":10,"current":25},"what-s-new-at-stack-overflow-march-2026","What’s new at Stack Overflow: March 2026",{"_id":28,"publishedAt":29,"slug":30,"title":32},"5e9053a4-07ea-447c-91ea-29e0b6228537","2026-02-02T15:00:00.000Z",{"_type":10,"current":31},"what-s-new-at-stack-overflow-february-2026","What’s new at Stack Overflow: February 2026",{"_id":34,"publishedAt":35,"slug":36,"title":38},"a1b538eb-a8a6-46d0-80a1-ac70ec9bb935","2026-01-05T10:00:00.000-05:00",{"_type":10,"current":37},"what-s-new-at-stack-overflow-january-2026","What’s new at Stack Overflow: January 2026",{"_createdAt":40,"_id":41,"_rev":42,"_type":43,"_updatedAt":44,"author":45,"body":61,"comments":314,"dateUrl":315,"excerpt":316,"image":317,"legacyBody":320,"product":12,"publishedAt":323,"slug":324,"sponsored":12,"tags":326,"title":339,"visible":314},"2023-05-25T09:39:16Z","wp-post-16557","9HpbCsT2tq0xwozQfkg3YV","blogPost","2023-07-13T14:55:43Z",[46],{"_createdAt":47,"_id":48,"_rev":49,"_type":50,"_updatedAt":51,"avatar":52,"employee":57,"name":58,"slug":59},"2023-05-23T16:27:18Z","wp-author-226","dgl3SCUzppW3U2LvCoOzcS","blogAuthor","2023-06-20T15:05:06Z",{"_type":53,"asset":54},"image",{"_ref":55,"_type":56},"image-56688f6337dd0a96034dfc998cdecc7810597d81-1024x1024-png","reference","current","Ryan Donovan",{"current":60},"rdonovan",[62,96,148,156,165,184,192,200,219,227,235,243,251,259,267,282,294,306],{"_key":63,"_type":64,"children":65,"markDefs":89,"style":95},"3d12b6f1e34e","block",[66,71,76,80,85],{"_key":67,"_type":68,"marks":69,"text":70},"3d12b6f1e34e0","span",[],"Last week, ",{"_key":72,"_type":68,"marks":73,"text":75},"3d12b6f1e34e1",[74],"dbd1cc26dcd2","JetBrains released Kotlin 1.4",{"_key":77,"_type":68,"marks":78,"text":79},"3d12b6f1e34e2",[]," to the programming community. The update added some new language features but also put a strong focus on improving quality-of-life and performance, especially when paired with JetBrains’s own ",{"_key":81,"_type":68,"marks":82,"text":84},"3d12b6f1e34e3",[83],"bfb6237060ce","IntelliJ IDEA IDE",{"_key":86,"_type":68,"marks":87,"text":88},"3d12b6f1e34e4",[],".",[90,93],{"_key":74,"_type":91,"href":92,"reference":12},"link","https:\u002F\u002Fblog.jetbrains.com\u002Fkotlin\u002F2020\u002F08\u002Fkotlin-1-4-released-with-a-focus-on-quality-and-performance\u002F",{"_key":83,"_type":91,"href":94,"reference":12},"https:\u002F\u002Fwww.jetbrains.com\u002Fidea\u002F","normal",{"_key":97,"_type":64,"children":98,"markDefs":139,"style":95},"992bf8940c18",[99,103,108,112,117,121,126,130,135],{"_key":100,"_type":68,"marks":101,"text":102},"992bf8940c180",[],"Kotlin is a programming language best known as “",{"_key":104,"_type":68,"marks":105,"text":107},"992bf8940c181",[106],"f7e2e9d4b603","Java without the warts.",{"_key":109,"_type":68,"marks":110,"text":111},"992bf8940c182",[],"” It can compile both to Java bytecode and native code, as well as transpile to JavaScript. It’s been in our ",{"_key":113,"_type":68,"marks":114,"text":116},"992bf8940c183",[115],"a60710775591","top five most loved languages",{"_key":118,"_type":68,"marks":119,"text":120},"992bf8940c184",[]," for three years running and, partly thanks to Android development moving to a Kotlin-first approach, it’s moved to the ",{"_key":122,"_type":68,"marks":123,"text":125},"992bf8940c185",[124],"edd1bfa9f5c9","13th most popular language",{"_key":127,"_type":68,"marks":128,"text":129},"992bf8940c186",[]," in this year’s survey. Java is still more popular and in active development, but ",{"_key":131,"_type":68,"marks":132,"text":134},"992bf8940c187",[133],"e4e6f9fb0df8","Kotlin partisans are fervent",{"_key":136,"_type":68,"marks":137,"text":138},"992bf8940c188",[]," in their appreciation for it.",[140,142,144,146],{"_key":106,"_type":91,"href":141,"reference":12},"https:\u002F\u002Fblog.joda.org\u002F2011\u002F07\u002Fkotlin-and-search-for-better-java_9066.html",{"_key":115,"_type":91,"href":143,"reference":12},"https:\u002F\u002Finsights.stackoverflow.com\u002Fsurvey\u002F2020#technology-most-loved-dreaded-and-wanted-languages",{"_key":124,"_type":91,"href":145,"reference":12},"https:\u002F\u002Finsights.stackoverflow.com\u002Fsurvey\u002F2020#technology-programming-scripting-and-markup-languages",{"_key":133,"_type":91,"href":147,"reference":12},"https:\u002F\u002Fmedium.com\u002Fstarliftorg\u002Fmeet-kotlin-the-best-programming-language-ever-66400e59db0d",{"_key":149,"_type":64,"children":150,"markDefs":155,"style":95},"81756c0f83e6",[151],{"_key":152,"_type":68,"marks":153,"text":154},"81756c0f83e60",[],"So what can users expect from this new version? Read on.",[],{"_key":157,"_type":64,"children":158,"markDefs":163,"style":164},"9d6f57839d20",[159],{"_key":160,"_type":68,"marks":161,"text":162},"9d6f57839d200",[],"Performance improvements",[],"h2",{"_key":166,"_type":64,"children":167,"markDefs":181,"style":95},"a294a1fb77c8",[168,172,177],{"_key":169,"_type":68,"marks":170,"text":171},"a294a1fb77c80",[],"The primary focus of this release was to improve performance across the board. Jetbrains (and the other contributors) fixed ",{"_key":173,"_type":68,"marks":174,"text":176},"a294a1fb77c81",[175],"2ca13f62bee8","over 60 performance-related issues",{"_key":178,"_type":68,"marks":179,"text":180},"a294a1fb77c82",[],". This includes a lot of IDE bugs that were slowing things down, causing memory leaks and freezes. Autocomplete results now surface faster, one of the benefits of using a programming language created by an IDE company.",[182],{"_key":175,"_type":91,"href":183,"reference":12},"https:\u002F\u002Fyoutrack.jetbrains.com\u002Fissues?q=%23%7BPerformance%20Problem%7D%20Subsystems:%20%7BIDE*%7D%20%23Fixed%20resolved%20date:%202019-10%20..%20Today%20and%20Target%20versions:%20-1.4.20&_ga=2.30975807.1683832779.1597768190-1926659182.1597768190",{"_key":185,"_type":64,"children":186,"markDefs":191,"style":95},"3b333eafee90",[187],{"_key":188,"_type":68,"marks":189,"text":190},"3b333eafee900",[],"For performance slowdowns, nothing beats the compiler. Big compilation times drain developer productivity, so this release includes a brand new compiler. Kotlin code should compile to any of the supported target platforms faster. Additionally, they added an API that allows future extensions to the compiler.",[],{"_key":193,"_type":64,"children":194,"markDefs":199,"style":164},"bf836d24673c",[195],{"_key":196,"_type":68,"marks":197,"text":198},"bf836d24673c0",[],"Functional interfaces",[],{"_key":201,"_type":64,"children":202,"markDefs":216,"style":95},"3b1460cdcffb",[203,207,212],{"_key":204,"_type":68,"marks":205,"text":206},"3b1460cdcffb0",[],"Single abstract method (SAM) interfaces, aka functional interfaces, were previously only supported when the interface was written in Java. While Kotlin is interoperable with Java libraries, this could lead to complications where you would have to write your interface in Java and your implementations in Kotlin. With the increasing relevance of lambda expressions, this ",{"_key":208,"_type":68,"marks":209,"text":211},"3b1460cdcffb1",[210],"9c7b2d8b950d","became increasingly burdensome",{"_key":213,"_type":68,"marks":214,"text":215},"3b1460cdcffb2",[]," and didn’t really fit in with Kotlin’s philosophy of remaining concise and improving developer happiness.",[217],{"_key":210,"_type":91,"href":218,"reference":12},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F44562745\u002Fhow-to-implements-a-java-sam-interface-in-kotlin",{"_key":220,"_type":64,"children":221,"markDefs":226,"style":95},"aa7eb058327d",[222],{"_key":223,"_type":68,"marks":224,"text":225},"aa7eb058327d0",[],"With SAM interfaces now supported directly in Kotlin, you can automatically convert a lambda expression that matches a SAM interface into an instance of a class that implements that interface without having to write the implementation class manually.",[],{"_key":228,"_type":64,"children":229,"markDefs":234,"style":164},"ddd4ecc8f327",[230],{"_key":231,"_type":68,"marks":232,"text":233},"ddd4ecc8f3270",[],"Explicit API mode",[],{"_key":236,"_type":64,"children":237,"markDefs":242,"style":95},"a1a45f2c43c9",[238],{"_key":239,"_type":68,"marks":240,"text":241},"a1a45f2c43c90",[],"Library authors have an additional complication compared to devs writing applications: visibility. They need to make sure that their API methods are visible to anyone incorporating their functionality and anyone taking this library as a dependency needs to know what type any exposed variables are. Visible by default could mean a dev exposes something never meant to be seen by application developers, and explicitly hiding something previously visible would mean breaking changes.",[],{"_key":244,"_type":64,"children":245,"markDefs":250,"style":95},"79aa995efbec",[246],{"_key":247,"_type":68,"marks":248,"text":249},"79aa995efbec0",[],"With explicit API mode, all methods must have their visibility stated and all types must be specified. This is a compiler feature, either as a gradle setting or command line option, and can throw either warnings or errors, depending on how militant you want to be about your API library.",[],{"_key":252,"_type":64,"children":253,"markDefs":258,"style":164},"f86148be733f",[254],{"_key":255,"_type":68,"marks":256,"text":257},"f86148be733f0",[],"Syntax conveniences",[],{"_key":260,"_type":64,"children":261,"markDefs":266,"style":95},"2406644381cc",[262],{"_key":263,"_type":68,"marks":264,"text":265},"2406644381cc0",[],"In line with its goal of making life easier for developers, Kotlin 1.4 adds a number of small language features that help avoid getting caught by errors of oversight:",[],{"_key":268,"_type":64,"children":269,"level":279,"listItem":280,"markDefs":281,"style":95},"ce7bde1c5742",[270,275],{"_key":271,"_type":68,"marks":272,"text":274},"ce7bde1c57420",[273],"strong","Mixing named and positional arguments in functions",{"_key":276,"_type":68,"marks":277,"text":278},"ce7bde1c57421",[],". Want to clarify an argument by explicitly mentioning its parameter name? Now you can without causing errors. For example `reformat('This is a String!', uppercaseFirstLetter = false , '-')` Previously, you could only pass values in the order specified in the method.",1,"bullet",[],{"_key":283,"_type":64,"children":284,"level":279,"listItem":280,"markDefs":293,"style":95},"d25e2382dba0",[285,289],{"_key":286,"_type":68,"marks":287,"text":288},"d25e2382dba00",[273],"Trailing commas. ",{"_key":290,"_type":68,"marks":291,"text":292},"d25e2382dba01",[],"In any comma-separated list of values or parameters, you can now include a comma at the end of the list without causing errors. Helpful for lists that are regularly edited and change over time.",[],{"_key":295,"_type":64,"children":296,"level":279,"listItem":280,"markDefs":305,"style":95},"f5b6fc9ebdf9",[297,301],{"_key":298,"_type":68,"marks":299,"text":300},"f5b6fc9ebdf90",[273],"Use `continue` and `break` within `when` loops without labeling. ",{"_key":302,"_type":68,"marks":303,"text":304},"f5b6fc9ebdf91",[],"These keywords can now just be used as is without labeling with `@LOOP`.",[],{"_key":307,"_type":64,"children":308,"markDefs":313,"style":95},"0ab610a69c31",[309],{"_key":310,"_type":68,"marks":311,"text":312},"0ab610a69c310",[],"Will these new features continue Kotlin’s growth or just please the existing base? Let us know in the comment if you think any of these additions make Kotlin a Java killer or if they are just riding the hype train.",[],true,"2020\u002F08\u002F26","",{"_type":53,"asset":318},{"_ref":319,"_type":56},"image-e25caa1f814fb42af5b56d75471631bcb2dcbdf8-2000x1499-jpg",{"code":321,"language":322},"\u003C!-- wp:paragraph -->\n\u003Cp>Last week, \u003Ca href=\"https:\u002F\u002Fblog.jetbrains.com\u002Fkotlin\u002F2020\u002F08\u002Fkotlin-1-4-released-with-a-focus-on-quality-and-performance\u002F\">JetBrains released Kotlin 1.4\u003C\u002Fa> to the programming community. The update added some new language features but also put a strong focus on improving quality-of-life and performance, especially when paired with JetBrains’s own \u003Ca href=\"https:\u002F\u002Fwww.jetbrains.com\u002Fidea\u002F\">IntelliJ IDEA IDE\u003C\u002Fa>.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Kotlin is a programming language best known as “\u003Ca href=\"https:\u002F\u002Fblog.joda.org\u002F2011\u002F07\u002Fkotlin-and-search-for-better-java_9066.html\">Java without the warts.\u003C\u002Fa>” It can compile both&nbsp; to Java bytecode and native code, as well as transpile to JavaScript. It’s been in our \u003Ca href=\"https:\u002F\u002Finsights.stackoverflow.com\u002Fsurvey\u002F2020#technology-most-loved-dreaded-and-wanted-languages\">top five most loved languages\u003C\u002Fa> for three years running and, partly thanks to Android development moving to a Kotlin-first approach, it’s moved to the \u003Ca href=\"https:\u002F\u002Finsights.stackoverflow.com\u002Fsurvey\u002F2020#technology-programming-scripting-and-markup-languages\">13th most popular language\u003C\u002Fa> in this year’s survey. Java is still more popular and in active development, but \u003Ca href=\"https:\u002F\u002Fmedium.com\u002Fstarliftorg\u002Fmeet-kotlin-the-best-programming-language-ever-66400e59db0d\">Kotlin partisans are fervent\u003C\u002Fa> in their appreciation for it.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>&nbsp;So what can users expect from this new version? Read on.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2>Performance improvements\u003C\u002Fh2>\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>The primary focus of this release was to improve performance across the board. Jetbrains (and the other contributors) fixed \u003Ca href=\"https:\u002F\u002Fyoutrack.jetbrains.com\u002Fissues?q=%23%7BPerformance%20Problem%7D%20Subsystems:%20%7BIDE*%7D%20%23Fixed%20resolved%20date:%202019-10%20..%20Today%20and%20Target%20versions:%20-1.4.20&amp;_ga=2.30975807.1683832779.1597768190-1926659182.1597768190\">over 60 performance-related issues\u003C\u002Fa>. This includes a lot of IDE bugs that were slowing things down, causing memory leaks and freezes. Autocomplete results now surface faster, one of the benefits of using a programming language created by an IDE company.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>For performance slowdowns, nothing beats the compiler. Big compilation times drain developer productivity, so this release includes a brand new compiler. Kotlin code should compile to any of the supported target platforms faster. Additionally, they added an API that allows future extensions to the compiler.\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2>Functional interfaces\u003C\u002Fh2>\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Single abstract method (SAM) interfaces, aka functional interfaces, were previously only supported when the interface was written in Java. While Kotlin is interoperable with Java libraries, this could lead to complications where you would have to write your interface in Java and your implementations in Kotlin. With the increasing relevance of lambda expressions, this \u003Ca href=\"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F44562745\u002Fhow-to-implements-a-java-sam-interface-in-kotlin\">became increasingly burdensome\u003C\u002Fa> and didn’t really fit in with Kotlin’s philosophy of remaining concise and improving developer happiness.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>With SAM interfaces now supported directly in Kotlin, you can automatically convert a lambda expression that matches a SAM interface into an instance of a class that implements that interface without having to write the implementation class manually.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2>Explicit API mode\u003C\u002Fh2>\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Library authors have an additional complication compared to devs writing applications: visibility. They need to make sure that their API methods are visible to anyone incorporating their functionality and anyone taking this library as a dependency needs to know what type any exposed variables are. Visible by default could mean a dev exposes something never meant to be seen by application developers, and explicitly hiding something previously visible would mean breaking changes.\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>With explicit API mode, all methods must have their visibility stated and all types must be specified. This is a compiler feature, either as a gradle setting or command line option, and can throw either warnings or errors, depending on how militant you want to be about your API library.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:heading -->\n\u003Ch2>Syntax conveniences\u003C\u002Fh2>\n\u003C!-- \u002Fwp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>In line with its goal of making life easier for developers, Kotlin 1.4 adds a number of small language features that help avoid getting caught by errors of oversight:\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->\n\n\u003C!-- wp:list -->\n\u003Cul>\u003Cli>\u003Cstrong>Mixing named and positional arguments in functions\u003C\u002Fstrong>. Want to clarify an argument by explicitly mentioning its parameter name? Now you can without causing errors. For example `reformat('This is a String!', uppercaseFirstLetter = false , '-')` Previously, you could only pass values in the order specified in the method. \u003C\u002Fli>\u003Cli>\u003Cstrong>Trailing commas. \u003C\u002Fstrong>In any comma-separated list of values or parameters, you can now include a comma at the end of the list without causing errors. Helpful for lists that are regularly edited and change over time.\u003C\u002Fli>\u003Cli>\u003Cstrong>Use `continue` and `break` within `when` loops without labeling. \u003C\u002Fstrong>These keywords can now just be used as is without labeling with `@LOOP`.\u003C\u002Fli>\u003C\u002Ful>\n\u003C!-- \u002Fwp:list -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Will these new features continue Kotlin’s growth or just please the existing base? Let us know in the comment if you think any of these additions make Kotlin a Java killer or if they are just riding the hype train.&nbsp;\u003C\u002Fp>\n\u003C!-- \u002Fwp:paragraph -->","html","2020-08-26T14:56:56.000Z",{"current":325},"kotlin-1-4-released-to-improve-performance",[327,335],{"_createdAt":328,"_id":329,"_rev":330,"_type":331,"_updatedAt":328,"slug":332,"title":334},"2023-05-23T16:43:21Z","wp-tagcat-code-for-a-living","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":333},"code-for-a-living","Code for a Living",{"_createdAt":328,"_id":336,"_rev":330,"_type":331,"_updatedAt":328,"slug":337,"title":338},"wp-tagcat-kotlin",{"current":338},"kotlin","Kotlin 1.4 released to improve performance",[341,347,353,359],{"_id":342,"publishedAt":343,"slug":344,"sponsored":12,"title":346},"76c9771b-34e6-4d98-8641-ecefc711f0ef","2026-07-06T15:23:34.559Z",{"_type":10,"current":345},"when-the-sensor-starts-thinking-snortml-agentic-ai-and-the-evolving-architecture-of-intrusion-detection","When the sensor starts thinking: SnortML, agentic AI, and the evolving architecture of intrusion detection",{"_id":348,"publishedAt":349,"slug":350,"sponsored":12,"title":352},"28e560af-f0aa-4d46-bd90-f435ad604aa7","2026-06-26T14:00:27.102Z",{"_type":10,"current":351},"paging-charity-how-can-engineering-leaders-avoid-becoming-bond-villains","Paging Charity! How can engineering leaders avoid becoming Bond villains?",{"_id":354,"publishedAt":355,"slug":356,"sponsored":12,"title":358},"4b22c2a3-3779-4966-93eb-5230391dbdce","2026-06-23T14:08:58.595Z",{"_type":10,"current":357},"your-ai-shipped-a-backend-that-boots-that-is-the-whole-problem","Your AI shipped a backend that boots. That is the whole problem.",{"_id":360,"publishedAt":361,"slug":362,"sponsored":12,"title":364},"5cf362e1-fe7b-45af-b69c-914731c6a052","2026-06-23T14:00:00.000Z",{"_type":10,"current":363},"the-2026-developer-survey-is-now-open-for-human-developers-only","The 2026 Developer Survey is now open (for human developers only)!",{"data":366,"sourceMap":-1},{"count":367,"lastTimestamp":368},8,"2023-05-25T09:47:22Z"]