CINXE.COM
Programming Languages | InfoWorld
<!doctype html> <html lang="en-US" data-brand="iw"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="https://gmpg.org/xfn/11"> <meta name='robots' content='max-image-preview:large, index,follow' /> <style> :root { --advertisement-label-text: "advertisement"; } </style> <script> window._sp_analytics = { config: { accountId: 146, events: { onDetectionComplete: function() { console.log('onMessageReady'); } }, } }; </script> <!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v23.3) - https://yoast.com/wordpress/plugins/seo/ --> <title>Programming Languages | InfoWorld</title> <meta name="twitter:label1" content="Written by" /> <meta name="twitter:data1" content="Amy Bennett" /> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//cdn.onthe.io' /> <link rel="alternate" type="application/rss+xml" title="InfoWorld » Feed" href="https://www.infoworld.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="InfoWorld » Comments Feed" href="https://www.infoworld.com/comments/feed/" /> <link rel='stylesheet' id='wp-block-library-css' href='https://www.infoworld.com/wp-includes/css/dist/block-library/style.min.css?ver=6.6.2' media='all' /> <style id='co-authors-plus-coauthors-style-inline-css'> .wp-block-co-authors-plus-coauthors.is-layout-flow [class*=wp-block-co-authors-plus]{display:inline} </style> <style id='co-authors-plus-avatar-style-inline-css'> .wp-block-co-authors-plus-avatar :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-avatar :where(img){vertical-align:middle}.wp-block-co-authors-plus-avatar:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-avatar.aligncenter{display:table;margin-inline:auto} </style> <style id='co-authors-plus-image-style-inline-css'> .wp-block-co-authors-plus-image{margin-bottom:0}.wp-block-co-authors-plus-image :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-image :where(img){vertical-align:middle}.wp-block-co-authors-plus-image:is(.alignfull,.alignwide) :where(img){width:100%}.wp-block-co-authors-plus-image:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-image.aligncenter{display:table;margin-inline:auto} </style> <style id='elasticpress-facet-style-inline-css'> .widget_ep-facet input[type=search],.wp-block-elasticpress-facet input[type=search]{margin-bottom:1rem}.widget_ep-facet .searchable .inner,.wp-block-elasticpress-facet .searchable .inner{max-height:20em;overflow:scroll}.widget_ep-facet .term.hide,.wp-block-elasticpress-facet .term.hide{display:none}.widget_ep-facet .empty-term,.wp-block-elasticpress-facet .empty-term{opacity:.5;position:relative}.widget_ep-facet .empty-term:after,.wp-block-elasticpress-facet .empty-term:after{bottom:0;content:" ";display:block;left:0;position:absolute;right:0;top:0;width:100%;z-index:2}.widget_ep-facet .level-1,.wp-block-elasticpress-facet .level-1{padding-left:20px}.widget_ep-facet .level-2,.wp-block-elasticpress-facet .level-2{padding-left:40px}.widget_ep-facet .level-3,.wp-block-elasticpress-facet .level-3{padding-left:60px}.widget_ep-facet .level-4,.wp-block-elasticpress-facet .level-4{padding-left:5pc}.widget_ep-facet .level-5,.wp-block-elasticpress-facet .level-5{padding-left:75pt}.widget_ep-facet input[disabled],.wp-block-elasticpress-facet input[disabled]{cursor:pointer;opacity:1}.widget_ep-facet .term a,.wp-block-elasticpress-facet .term a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.widget_ep-facet .term a:hover .ep-checkbox,.wp-block-elasticpress-facet .term a:hover .ep-checkbox{background-color:#ccc}.ep-checkbox{-webkit-box-align:center;-ms-flex-align:center;-ms-flex-negative:0;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:#eee;display:-webkit-box;display:-ms-flexbox;display:flex;flex-shrink:0;height:1em;justify-content:center;margin-right:.25em;width:1em}.ep-checkbox:after{border:solid #fff;border-width:0 .125em .125em 0;content:"";display:none;height:.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:.25em}.ep-checkbox.checked{background-color:#5e5e5e}.ep-checkbox.checked:after{display:block} </style> <link rel='stylesheet' id='elasticpress-related-posts-block-css' href='https://www.infoworld.com/wp-content/mu-plugins/search/elasticpress/dist/css/related-posts-block-styles.min.css?ver=4.2.2' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='editions-desktop-css' href='https://www.infoworld.com/wp-content/client-mu-plugins/idg-editions/dist/styles/main.css?ver=0.1.0' media='all' /> <link rel='stylesheet' id='third-party-integrations-style-css' href='https://www.infoworld.com/wp-content/client-mu-plugins/idg-third-party/dist/styles/index.css?ver=1732597758' media='all' /> <link rel='stylesheet' id='frontend-jwplayer-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/jwplayer.css?ver=1732597758' media='all' /> <link rel='stylesheet' id='frontend-shared-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/shared.css?ver=1732597758' media='all' /> <link rel='stylesheet' id='frontend-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/bundle.css?ver=1732597758' media='all' /> <link rel='stylesheet' id='iw-amp-styles-css' href='https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/dist/styles/amp.css?ver=1732597758' media='all' /> <script type="text/javascript" src="https://www.infoworld.com/wp-includes/js/dist/hooks.min.js?m=1732206009g" ></script><script src="https://www.infoworld.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); </script> <script type="text/javascript" src="https://www.infoworld.com/wp-content/client-mu-plugins/idg-editions/dist/scripts/editions-front.js?m=1732597758g" ></script><script id="third-party-integrations-script-js-extra"> var IDG = {"settings":{"cmp":{"account":{"id":"146","base_endpoint":"https:\/\/cmpv2.infoworld.com","href":"https:\/\/www.infoworld.com","is_cp_multi_campaign_enabled":true},"gdpr":{"script":"https:\/\/cmpv2.infoworld.com\/unified\/wrapperMessagingWithoutDetection.js","privacy_manager_id":"165662","property_id":"9220","privacy_manager_id_amp":"172450","href_amp":"https:\/\/amp.infoworld.com"},"ccpa":{"script":"https:\/\/ccpa.sp-prod.net\/ccpa.js","origin":"https:\/\/ccpa-service.sp-prod.net","privacy_manager_id":"1098540","privacy_manager_uuid":"5dfa75f712068b42714ed7b8","property_id":"16077","href_amp":"https:\/\/ccpa.amp.infoworld.com"}},"gtm":{"account":{"id":"GTM-5JGZ3LH","amp_id":"","ua_number":"UA-6647659-1"}},"gpt":{"consent":{"vendor_id":"5e74df5ff443bb795772df9c"},"config":{"prefix":"\/8456\/IDG.G_B2B_InfoWorld.com\/","threshold":"0.7","slots":[{"name":"gpt-leaderboard","template":"banner","disabled":false,"sticky_duration":"12","pos":"ATF1","size":"728x90","size_definitions":[{"breakpoint":"970","sizes":"728x90"},{"breakpoint":"728","sizes":"728x90"},{"breakpoint":"320","sizes":"300x50,320x50"}],"insert_after_p":"1"},{"name":"gpt-leaderboardmainbod","template":"article","disabled":false,"refresh_interval":"15","refresh_amount":"6","size":"300x50","pos":"BTF{{count}}","size_definitions":[{"breakpoint":"970","sizes":"970x250,728x90,300x250"},{"breakpoint":"728","sizes":"728x90,300x250"},{"breakpoint":"320","sizes":"300x50,320x50,300x250,300x240"}],"page_template":[{"custom_template":"Homepage","desktop":"3,10","mobile":"3,10","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Article","desktop":"3,6,9,12,15,18,21,24,27,30,33,36,40","mobile":"3,6,9,12,15,18,21,24,27,30,33,36,40","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Archive","desktop":"0","mobile":"0","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Topic landing page","desktop":"3,9","mobile":"3,9","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]}],"insert_after_p":"1"},{"name":"gpt-rightrail","template":"right_rail","disabled":false,"size":"120x600","section":"Sidebardfpatf{{count}}","pos":"BTF{{count}}","size_definitions":[{"breakpoint":"970","sizes":"300x250,300x600,160x600,120x600"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"},{"name":"gpt-oc_ad_1","template":"oc_ad_1","disabled":false,"size":"7x7","pos":"ATF1","size_definitions":[{"breakpoint":"970","sizes":"7x7,1x2"},{"breakpoint":"728","sizes":"7x7"},{"breakpoint":"320","sizes":"7x7"}],"insert_after_p":"1"},{"name":"gpt-topimu","template":"topimu","disabled":false,"size":"300x50","pos":"ATF1","size_definitions":[{"breakpoint":"970","sizes":"300x250,300x600,160x600,120x600"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"},{"name":"gpt-overlay","template":"overlay","disabled":false,"size":"640x480","pos":"gpt-overlay","size_definitions":[{"breakpoint":"970","sizes":"640x480"},{"breakpoint":"728","sizes":"640x480"},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"},{"name":"gpt-skin","template":"skin","disabled":false,"size":"1x1","pos":"gpt-skin","size_definitions":[{"breakpoint":"970","sizes":"1x1"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"}],"aps_pub_id":"0"}},"ias":{"account":{"pub_id":""}},"index_exchange":{"config":{"id":""}},"permutive":{"account":{"workspace_id":"f5b3be27-f789-4ef1-8867-37c67da5b361","api_key":"84c7e805-5ce9-41f4-b988-3529488bab1c"}},"outbrain":[],"nativo":{"config":{"script":"https:\/\/s.ntv.io\/serve\/load.js","page_template":[{"custom_template":"Homepage","desktop":"5,8,13","mobile":"5,8,13"},{"custom_template":"Article","desktop":"22,32,37","mobile":"22,32,37"},{"custom_template":"Archive","desktop":"3","mobile":"3"}],"relatedcontent":[{"related_content_block":"Related Content","desktop":"3","block_name":"related_content"}],"populartopic":[{"nativopopulartopic":"Popular Topics","desktop":"2","mobile":"2","block_name":"popular_topics"}],"herov2":[{"nativoherov2":"Hero V2","desktop":"2","mobile":"2","block_name":"hero_v2","variant":[{"variant_name":"Default","desktop":"3,5","mobile":"3,5","Variant_value":"default"},{"variant_name":"Card 4 By 4","desktop":"4","mobile":"4","Variant_value":"fourByFour"},{"variant_name":"Card Small 4 By 4","desktop":"4","mobile":"4","Variant_value":"oneByThree"}]}],"variouscontentlisting":[{"various_content_listing":"Various content listings","desktop":"3,5,9","mobile":"3,5,9","block_name":"various_content_listing"}]}},"newsletter_register_para_details":{"nrp_info":{"paracount":"0"}},"newsletter_subscribe_btn_redirect_url":[],"subscribers":{"config":{"id":"d73925e9-37f6-478a-9804-7901f9e3a2ae","script":"https:\/\/cdn.subscribers.com\/assets\/subscribers.js"}},"jw_player":{"config":{"insert_after_p":"4","insert_after_article":"","player_library_id":"8yHZorDV","amp_player_library_id":"Q4xdwtHS","floating_player_playlist_id":"wj1ht0vS","adscheduleid":"LxK3nuOJ","floating_player_adscheduleid":"LxK3nuOJ","description_url":"http:\/\/www.infoworld.com","sz":"640x480|640x360","ciu_szs":"300x250,728x90"}},"io_script":{"config":{"id":"OmWzZwn3Mi5H","io_amp_id":"45650"}}},"GPT":{"ad_slot_name":"page_door","prefix":"\/8456\/IDG.G_B2B_InfoWorld.com\/","targeting":{"articleId":"100007618","author":"Amy Bennett","browser":"Mozilla\/4.0(compatible;MSIE7.0;WindowsNT6.0;SLCC1;.NETCLR2.0.50727;.NETCLR3.0.04506;.NETCLR3.5.21022;.NETCLR1.0.3705;.NETCLR1.1.4322)","templateType":"other","categorySlugs":"","tags":"","categoryIds":"","env":null,"productId":"","goldenIds":"","channel":"","fireplace":"false","type":"","typeId":"","sponsored":"false","video-autoplay":"true","manufactuer":"microsoft","url":"https:\/\/www.infoworld.com\/programming-languages\/","zone":"programming-languages-index-other","wpsponsorshipId":""}},"geolocation":"SG","suppress_monetization":{},"supressBb2bRightrail":"","products":[],"vendor_pricing":{"amazon":[]},"APS":[],"isB2B":"1","isSingle":"","isEuVisitor":""}; </script> <script id="third-party-integrations-script-js-before"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({"adBlockerEnabled":true,"arenaId":"","audience":"enterprise","ccpaOptedOut":"false","environment":"wp_production","sessionNumber":"@TODO","firstSessionDate":"@TODO","lastSessionDate":"@TODO","timestamp":1732766778,"url":"https:\/\/www.infoworld.com\/programming-languages\/","triblioPixelCode":"","prodIds":"","prodCategories":"","prodManufacturers":"","prodNames":"","prodVendors":"","categories":"","categoryIds":"","categoriesSlugs":"","channel":"","primaryCategory":"","primaryAncestorCategoryList":"","primaryAncestorCategoryListSlugs":"","ancestorGoldenCategories":"","goldenTaxonomyIdPrimary":"","gtaxPrimaryIdsList":"","gtaxPrimarySlugsList":"","gtaxIdList":"","gtaxList":"","bcGtaxIdList":[],"bcGtaxList":[],"language":"English","articleId":"100007618","articleTitle":"Programming Languages","articleType":"","author":"Amy Bennett","isBlog":"false","blogname":"","blogId":"","brandpost":"false","content_type":"programming-languages index","datePublished":"2024-06-26","dateUpdate":"2024-07-09","dateTimePublished":"2024-06-26T19:05:45-04:00","dateTimeUpdate":"2024-07-09T11:28:29-04:00","dateFirstPublished":false,"dateFirstTimePublished":false,"daysSincePublished":"","daysSinceUpdated":"141","description":"Programming Languages | News, how-tos, features, reviews, and videos\n","displayType":"programming-languages index","fireplace":"false","pageNumber":"1","page_type":"other","platform":"web","podcastSponsored":"false","property":"infoworld","source":"","sponsorName":"","sponsorshipId":"","tags":[],"legacyCmsId":"","edition":"","articleLocale":"","isInsiderContent":"false","insiderSignedIn":"true","adSuppression":"false","BCUID":"","legacyCmsName":"","idgAppID":{"SITE_TYPE":[{"type":"delivery","site":"infoworld.com","sourcecms":"onecms","connectedhub":"b2b","staff":"Infoworld Staff","brand":"IW"}],"IDG_APP_ID":9049}}); // GDPR Stub function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){for(var t,e,o=[],n=window,r=n;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=n.parent}t||(function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))}(); window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator")); // CCPA Stub (function () { var e = false; var c = window; var t = document; function r() { if (!c.frames["__uspapiLocator"]) { if (t.body) { var a = t.body; var e = t.createElement("iframe"); e.style.cssText = "display:none"; e.name = "__uspapiLocator"; a.appendChild(e) } else { setTimeout(r, 5) } } } r(); function p() { var a = arguments; __uspapi.a = __uspapi.a || []; if (!a.length) { return __uspapi.a } else if (a[0] === "ping") { a[2]({ gdprAppliesGlobally: e, cmpLoaded: false }, true) } else { __uspapi.a.push([].slice.apply(a)) } } function l(t) { var r = typeof t.data === "string"; try { var a = r ? JSON.parse(t.data) : t.data; if (a.__cmpCall) { var n = a.__cmpCall; c.__uspapi(n.command, n.parameter, function (a, e) { var c = { __cmpReturn: { returnValue: a, success: e, callId: n.callId } }; t.source.postMessage(r ? JSON.stringify(c) : c, "*") }) } } catch (a) { } } if (typeof __uspapi !== "function") { c.__uspapi = p; __uspapi.msgHandler = l; c.addEventListener("message", l, false) } })(); // Google Tag Manager (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5JGZ3LH'); // Permutive Stub !function(n,e,i){if(!n){n=n||{},window.permutive=n,n.q=[],n.config={}||{},n.config.apiKey=e,n.config.environment=n.config.environment||"production";for(var o=["addon","identify","track","trigger","query","segment","segments","ready","on","once","user","consent"],r=0;r<o.length;r++){var t=o[r];n[t]=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);n.q.push({functionName:e,arguments:i})}}(t)}}}( window.permutive, '84c7e805-5ce9-41f4-b988-3529488bab1c' ); window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag.cmd.push(function(){if(0===window.googletag.pubads().getTargeting("permutive").length){var g=window.localStorage.getItem("_pdfps");window.googletag.pubads().setTargeting("permutive",g?JSON.parse(g):[])}}); let categorySlug = 'programming-languages'; const stripOutIllegal = s => s.replace(/[~'"=!+#;^()<>&[]]/g,''); window.ntvConfig = window.ntvConfig || {} ; window.ntvConfig.keyValues = window.ntvConfig.keyValues || {}; const segs = localStorage.getItem('_pnativo'); if (segs) { window.ntvConfig.keyValues.permutive = JSON.parse(segs).join(","); } const metaKeywordsTag = document.querySelector("meta[name='keywords']"); if ( metaKeywordsTag && (metaKeywordsTag.hasAttribute('content')) ) { const kwds = metaKeywordsTag.content.split(',').filter(kw => kw.length <= 40); window.ntvConfig.keyValues.contextual = stripOutIllegal(kwds.join(',')); } [categorySlug].forEach(function(val) { if (val.length !== 0) { window.ntvConfig.keyValues.channel = stripOutIllegal(val); } }); if (typeof(window.ntvConfig.keyValues.channel) === "undefined") { window.ntvConfig.keyValues.channel = ""; } const DoSomething = () => { const boxes = document.querySelectorAll('.nativo-loading'); boxes.forEach(box => { box.classList.remove('nativo-loading'); }); } var ntv=ntv||{};ntv.cmd=ntv.cmd||[]; // setup command queue ntv.cmd.push(function(){ setTimeout(DoSomething, 1000) }); </script> <script> window._io_config = window?._io_config || {}; window._io_config["0.2.0"] = window?._io_config["0.2.0"] || []; window._io_config["0.2.0"].push({"page_url":"https:\/\/www.infoworld.com\/programming-languages","page_url_canonical":"https:\/\/www.infoworld.com\/programming-languages\/","page_title":"Programming Languages | InfoWorld","page_type":"default","page_language":"en"}); </script> <script src="https://www.infoworld.com/wp-content/client-mu-plugins/idg-third-party/dist/scripts/index.js?ver=1732597758" id="third-party-integrations-script-js"></script> <script type="text/javascript" src="https://www.infoworld.com/_static/??-eJydzMENgzAMAMCFMBatUMqj6ixpHFFHIbVsI5TtYQZe9zs8BNK/eW6OqfIFbDtI3Vduhkwr+I+VQKJ6R2JztKQsblgOqbFnHYsNeL8RzV8miGRX9NneU3g+5iWE+VVOaHA56w==" ></script><script async src="https://cdn.onthe.io/io.js/OmWzZwn3Mi5H?ver=1" id="io_script_code-js"></script> <script type="text/javascript" src="https://www.infoworld.com/_static/??-eJx9jMEKwjAQRH/I7WKlRA/itzTJUjdk05rdIP69QXroSRh4MLwZfG/AJeQWSTH1vBrVz45BuAxJT/hPAuGlzkZHOazFqBjak6RPOC7gRw9+VoJfh5HVUEPlzRRDU1sFpGVjpUzB+tFD7md3Gaebc9M1fQHSnj2i" ></script><script type="application/ld+json">[{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infoworld.com\/"},{"@type":"ListItem","position":2,"name":"Programming Languages","item":""}]},{"@context":"https:\/\/schema.org\/","@type":"CollectionPage","mainEntity":{"@type":"ItemList","itemListElement":[]}}]</script> <style> :root { /* Nativo Loader */ --nativo-loader-color: #424a45; --sponsored-links--border-bottom-color: #9d9490; --sponsored-container--background-color: #fff; /* Advertisement */ --advertisement-label-text: "advertisement"; } </style> <link rel="shortcut icon" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon.ico" type="image/x-icon"/> <link rel="apple-touch-icon" sizes="180x180" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon-16x16.png"> <link rel="manifest" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/site.webmanifest"> <link rel="mask-icon" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/safari-pinned-tab.svg" color="#0000cc"> <meta name="msapplication-TileColor" content="#0000cc"> <meta name="theme-color" content="#ffffff"> <style> :root { /*Host Speaker Profile*/ --host-speaker-profile-heading-color: #141414; --host-speaker-profile-heading-font-family: "fira-sans", sans-serif; --host-speaker-profile-title-description-font-family: "myriad-pro",sans-serif; --host-speaker-title-color: #808080; --host-speaker-description-color: #141414; --host-speaker-label-color: #AAA; --host-speaker-remove-link-color: #c30e0e; --host-speaker-horizontal-line-color: #DEDEDE; --host-speaker-company-name-font-color: #75757A; /* Agenda Block */ --agenda-heading-event-name-color: #141414; --agenda-heading-font-family: "fira-sans", sans-serif; --agenda-event-name-font-family: "myriad-pro",sans-serif; --agenda-horizontal-block-divider-color: #dedede; --agenda-event-month-day-date-color: #322a2a; --agenda-event-month-date-color: #969696; --agenda-start-end-time-color: #75757a; --agenda-error-msg-color: #FF0000; --agenda-day-time-text-shadow-color: #808080; --agenda-note-text-color: #808080; --agenda-label-text-color: #111; --agenda-multi-day-button-background-color: #000; --agenda-multi-day-button-text-color: #fff; --agenda-heading-label-color: #AAA; --agenda-details-link-color: #327F7C; --agenda-block-mobile-background-color: #f5f5f5; /*event content block */ --event-register-btn-bg-color: #ed1b24; --event-register-btn-color: #fff; --event-share-icons-color: white; --event-share-icons-color-fb: #3b5998; --event-share-icons-color-twitter: #00acee; --event-share-icons-color-linkedin: #2867b2; --event-description-top-border: #d8dad8; --event-details-label-color: #B30000; --event-details-text-color: #141414; --event-logo-label: "myriad-pro", sans-serif; --event-description-text-color: #322a2a; --who-should-attend-heading: "fira-sans", sans-serif; --who-should-attend-text: "myriad-pro", sans-serif; /* Event Hero Block */ --fira-sans-fonts: "fira-sans", sans-serif; --fira-sans-regular: 400; --fira-sans-extrabold: 800; --fira-sans-semibold: 600; /* Event Index Page */ --border-color: #75757a; --filter-background-color: #F6F6F6; --base--font-color: #322a2a; --index-more-events-title-color: #141414; --myraid-font-family: "myriad-pro",sans-serif; --myriad-regular: 400; --myriad-bold: 700; --base--global-white-color: #fff; --base--global-black-color: #000; --index-events-title-font-hover-color: #B30000; /* Image Credit */ --image-credit-font-color: #555; --image-credit-text: "Credit: "; --event-hero-block-heading-color: #fff;--event-hero-dynamic-background-image: url(""); } </style> <style> :root { /* FAQ*/ --faq-heading-seprator-color: #d8d8d8; --faq-input-box-border-color: #757575; --faq-remove-link-color: #c30e0e; --faq-heading-color: #141414; --faq-heading-font-family: "fira-sans", sans-serif; --faq-title-description-font-family: "myriad-pro",sans-serif; --faq-label-color: #AAA; --faq-company-name-font-color: #75757A; --faq-horizontal-line-color: #DEDEDE; --faq-head-title--font-family: "graphik", sans-serif; } </style> <style> :root { /* Nav menu */ --nav-menu-error: #b32d2e; /* Promo Unit Block HR color */ --promo-unit-hr: #d55d5d; /* Promo Unit Block Title After Color */ --promo-unit-title-after: #d04949; /* Promo Unit Block Title After Color */ --promo-unit-title: #322a2a; /* Promo Unit Block Title before Color */ --promo-unit-before-one: #e42e22; /* Promo Unit Block Title before Color */ --promo-unit-before-two: #f3f5f6; /* Promo Unit Block Title before Color */ --promo-unit-item-bg: #000; /* Deals Collection Block */ --deal-collection-productIndex-border-color: #12C7F1; --deal-collection-deal-header-color: #000; --deal-collection-deal--view-button--background-color: #21873A; --deal-collection-deal-price-color: #CD0912; --site-primary: #3399cc; --view-button--green: #3e873a; /* Jobs Collection Block */ --job-collection-productIndex-border-color: #12C7F1; --job-collection-job-header-color: #000; --job-collection-job--view-button--background-color: #21873A; --job-collection-job-price-color: #CD0912; /* Publication list pop-up pn edit edition page */ --publication-list-container-bg: rgba(255, 255, 255, 1); --publication-list-container-border: #111; --publication-list-container-bs: #222; --publication-list-bg:rgba(100, 100, 100, .6); --publication-list-popup-header-border: #ddd; --publication-list-popup-header-bg: #e9e9e9; /*Lineup Element*/ --lineup-element-error-font-color: #cd423b; --lineup-element-disabled-button-background-color: #ddd; --lineup-element-disabled-button-font-color: #eee; --lineup-element-button-tooltip-background-color: #757575; --lineup-element-button-tooltip-font-color: #fff; --lineup-element-note-font-color: #757575; --lineup-element-button-disabled: hsla(0,0%,100%,.4); /* LineUp Popover.*/ --lineup-popover-a-color: white; --lineup-popover-err-color: red; --lineup-popover-th-color: #d4d4d4; --lineup-popover-tr-color: #f2f2f2; --lineup-popover-paginate-a-active-color: #ddd; --lineup-popover-paginate-a-non-active-color: #006ba1; /* Slotting settings */ --slotting-settings-taxonomy-help-text-color: #808080; /* Author section top */ --sponsorship-brandpost-divider-line-color: #D8D8D8; /** Block - Product chart */ --product-chart--information-value--font-color: #2A7DA7; --product-chart--review-link--font-color: #2A7DA7; --product-chart--description--font-color: #4D4D4D; --product-chart--separator--background-color: #404040; /** Block - Product chart Pros and Cons */ --product-chart--pros-cons-title--font-color: #111111; --product-chart--pros-cons-border: 1px solid #ccc; /* Author Archive Page */ --author-archive-title: rgba(0, 0, 0, .87); --author-job-title: #000; --author-share-icons-divider-color: #D8D8D8; --author-share-icon-fill-color: #111; /* Sponsors index Page */ --sponsored-index-page-slug-background-color: #eee; --sponsorship-brandpost--title: 28px; --sponsorship-title--line-height: 32px; --uppercase-text: uppercase; --sponsor-eyebrow--font-color: #75757A; --sponsor-tooltip-learn-more--font-color: #111111; --sponsorship-brandpost--title-color: #111111; /* How to - at a glance block */ --how-to-at-glance-text-font-family: "canada-type-gibson", sans-serif; --how-to--step-heading--font-family: "regis", serif; --how-to--step-border--divider-color: #B6AEAA; --how-to--at-a-glance--background-color: #E6DCD5; /* Sponsorship Header. */ --sponsorship-header--font-color: #4d4d4d; /* fonts */ --fira-sans-semibold: 700; /* responsive table gradient */ --core-table--gradient--border-color: #C5C5C5; --core-table--gradient--alpha--border-color: #faf6f445; /* headings */ --heading-three: 24px; --heading-four: 20px; --heading-three-line-height: 30px; /* Insider Popover.*/ --insider-popover-background-color: white; --insider-popover-box-shadow-color: rgba(0, 0, 0, .31); --insider-popover-help-text-color: #4a4a4a; --insiderPopover-link-color: #322a2a; --insider-popover-signing-button-text-color: white; --insider-popover-signin-button-background: #4a3d3d; --insider-popover-signout-button-background: #b43017; --insiderPopover-welcome-font-color: #141414; /* Listing Button */ --insider-listing-primary-button-background : #4e4242; --insiderPopover-link-hover-color:#3c807c; --mercury-form--insider-color: #6eae00; } </style> <meta name="displaytype" content="article" /> <meta name="source" content="https://www.infoworld.com/programming-languages/" /> <link rel="canonical" href="https://www.infoworld.com/programming-languages/" /> <meta name="description" content="Programming Languages | News, how-tos, features, reviews, and videos " /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.infoworld.com/programming-languages/" /> <meta property="og:site_name" content="InfoWorld" /> <meta property="og:title" content="Programming Languages" /> <meta property="og:description" content="Programming Languages | News, how-tos, features, reviews, and videos " /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:url" content="https://www.infoworld.com/programming-languages/" /> <meta property="twitter:site" content="InfoWorld" /> <meta property="twitter:title" content="Programming Languages" /> <meta property="twitter:description" content="Programming Languages | News, how-tos, features, reviews, and videos " /> </head> <body class="page-template page-template-templates page-template-template-topic-landing page-template-templatestemplate-topic-landing-php page page-id-100007618 idg-b2b-topic-landing-page sticky-header theme-iw"> <svg id="icon-sprite" style="position: absolute; width: 0; height: 0; overflow: hidden;" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"> <defs> <g id="icon-apple-podcasts"> <path d="M11.432 20.546c-.681-.244-.827-.575-1.107-2.515-.324-2.255-.395-3.65-.207-4.093.25-.586.927-.919 1.873-.922.94-.004 1.624.332 1.874.922.189.441.118 1.838-.207 4.093-.221 1.575-.342 1.974-.647 2.241-.418.37-1.012.473-1.575.274h-.004Zm-2.91-2.314c-2.351-1.157-3.858-3.114-4.406-5.718-.137-.673-.16-2.275-.03-2.893.342-1.655.997-2.95 2.085-4.094C7.739 3.874 9.756 3 12 3c2.222 0 4.231.858 5.761 2.461 1.164 1.21 1.819 2.491 2.154 4.179.114.561.114 2.092.007 2.724a8.091 8.091 0 0 1-3.082 5.04c-.58.437-1.994 1.2-2.222 1.2-.084 0-.092-.087-.053-.438.068-.563.136-.68.456-.814.51-.213 1.378-.831 1.91-1.366a7.27 7.27 0 0 0 1.91-3.363c.198-.784.176-2.527-.044-3.334-.695-2.567-2.787-4.56-5.351-5.093-.746-.153-2.101-.153-2.855 0-2.595.532-4.741 2.625-5.397 5.258-.175.714-.175 2.459 0 3.174.434 1.743 1.561 3.341 3.037 4.293.25.167.512.317.784.449.32.137.388.25.448.814.038.342.03.441-.053.441-.053 0-.441-.167-.852-.365l-.036-.028Zm.031-3.095c-.792-.632-1.491-1.752-1.78-2.851-.176-.664-.176-1.926.007-2.587.48-1.787 1.796-3.172 3.622-3.823.625-.22 2.008-.268 2.778-.1 2.648.588 4.529 3.24 4.165 5.871-.145 1.06-.51 1.931-1.157 2.74-.32.409-1.096 1.095-1.233 1.095-.022 0-.044-.26-.044-.575v-.573l.396-.472c1.492-1.787 1.385-4.282-.244-5.921-.631-.637-1.362-1.012-2.306-1.185-.609-.113-.738-.113-1.377-.007-.97.158-1.722.535-2.39 1.194-1.64 1.618-1.746 4.129-.254 5.917l.393.474v.58c0 .32-.026.58-.057.58-.031 0-.251-.152-.487-.343l-.032-.014Zm2.64-3.107c-.676-.316-1.042-.91-1.05-1.685 0-.696.389-1.304 1.058-1.66.427-.222 1.18-.222 1.606 0 .473.256.828.686.99 1.199.441 1.5-1.15 2.816-2.588 2.144l-.015.002Z" fill="currentColor"/> <path d="M12.114 12.325a1.898 1.898 0 1 0 0-3.795 1.898 1.898 0 0 0 0 3.796ZM12.298 13.06c.215.025.428.068.635.13a2.3 2.3 0 0 1 .636.318c.168.121.29.248.366.401.076.153.114.336.137.636.015.3.015.713-.053 1.491a53.146 53.146 0 0 1-.313 2.636c-.106.726-.182 1.05-.281 1.286a1.152 1.152 0 0 1-.845.738 1.83 1.83 0 0 1-.441.038 1.893 1.893 0 0 1-.442-.038c-.174-.038-.401-.106-.57-.243-.176-.137-.29-.335-.381-.594-.091-.259-.16-.57-.251-1.195a66.213 66.213 0 0 1-.29-2.26 18.148 18.148 0 0 1-.112-1.522c-.006-.328.008-.491.044-.647.036-.15.098-.291.183-.419a1.389 1.389 0 0 1 .661-.504c.157-.06.32-.106.485-.137.197-.038.426-.075.543-.091a.596.596 0 0 1 .248 0l.04-.024Z" fill="currentColor"/> </g> <g id="icon-arrow-up-right-from-square"> <path fill-rule="evenodd" clip-rule="evenodd" d="m19.19 3.75-9.72 9.72-.53.53L10 15.06l.53-.53 9.72-9.72v4.94h1.5V3a.747.747 0 0 0-.75-.75h-6.75v1.5h4.94ZM4 5.75a.25.25 0 0 0-.25.25v14c0 .138.112.25.25.25h14a.25.25 0 0 0 .25-.25V11.717h1.5V20A1.75 1.75 0 0 1 18 21.75H4A1.75 1.75 0 0 1 2.25 20V6c0-.966.784-1.75 1.75-1.75H12.283v1.5H4Z" fill="currentColor"/> </g> <g id="icon-calendar"> <path fill-rule="evenodd" clip-rule="evenodd" d="M20 5.5H4a.5.5 0 0 0-.5.5v2.25h17V6a.5.5 0 0 0-.5-.5ZM3.5 18V9.75h17V18a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm5.42 10.292c0 .75.198 1.092.696 1.092.48 0 .666-.354.666-1.098v-.156c0-.75-.198-1.098-.678-1.098-.486 0-.684.348-.684 1.092v.168Zm2.712-.03c0 1.38-.804 2.172-2.058 2.172-1.236 0-2.004-.768-2.004-2.136v-.168c0-1.374.882-2.13 2.028-2.13 1.14 0 2.034.678 2.034 2.1v.162Zm3.254 2.094h-1.362v-2.952l-.792.474V12.75l.984-.684h1.17v4.29Z" fill="currentColor"/> </g> <g id="icon-caret-down"> <path d="m6 8 4.3 7.1c.8 1.3 2.7 1.3 3.4 0L18 8H6Z" fill="currentColor"/> </g> <g id="icon-circle-bars"> <path fill-rule="evenodd" clip-rule="evenodd" d="M18.287 5.833C16.902 4.408 14.815 3.5 12 3.5c-2.87 0-4.952.91-6.32 2.329C4.303 7.256 3.5 9.353 3.5 12c0 2.58.819 4.684 2.217 6.134C7.107 19.574 9.196 20.5 12 20.5c2.804 0 4.893-.926 6.283-2.366C19.681 16.684 20.5 14.58 20.5 12c0-2.636-.822-4.735-2.213-6.167ZM22 12c0-5.9-3.7-10-10-10C5.6 2 2 6.1 2 12c0 5.8 3.7 10 10 10s10-4.2 10-10ZM7 10.75v-1.5h10v1.5H7Zm0 2.5v1.5h10v-1.5H7Z" fill="currentColor"/> </g> <g id="icon-circle-chevron-down"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2ZM8.326 9.97l3.536 3.536a.25.25 0 0 0 .353 0l3.536-3.535 1.06 1.06-3.535 3.536a1.75 1.75 0 0 1-2.475 0L7.266 11.03l1.06-1.06Z" fill="currentColor"/> </g> <g id="icon-circle-chevron-left"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2Zm1.773 6.53-3.536 3.536a.25.25 0 0 0 0 .353l3.536 3.536-1.061 1.06-3.536-3.535a1.75 1.75 0 0 1 0-2.475l3.536-3.535 1.06 1.06Z" fill="currentColor"/> </g> <g id="icon-circle-chevron-right"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2ZM9.712 8.53l3.535 3.536a.25.25 0 0 1 0 .353l-3.535 3.536 1.06 1.06 3.536-3.535a1.75 1.75 0 0 0 0-2.475L10.773 7.47 9.712 8.53Z" fill="currentColor"/> </g> <g id="icon-circle-chevron-up"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2Zm3.752 12.53-3.536-3.536a.25.25 0 0 0-.353 0l-3.536 3.535-1.06-1.06 3.535-3.536a1.75 1.75 0 0 1 2.475 0l3.536 3.536-1.061 1.06Z" fill="currentColor"/> </g> <g id="icon-circle-xmark"> <path fill-rule="evenodd" clip-rule="evenodd" d="M18.287 5.833C16.902 4.408 14.815 3.5 12 3.5c-2.87 0-4.952.91-6.32 2.329C4.303 7.256 3.5 9.353 3.5 12c0 2.58.819 4.684 2.217 6.134C7.107 19.574 9.196 20.5 12 20.5c2.804 0 4.893-.926 6.283-2.366C19.681 16.684 20.5 14.58 20.5 12c0-2.636-.822-4.735-2.213-6.167ZM22 12c0-5.9-3.7-10-10-10C5.6 2 2 6.1 2 12c0 5.8 3.7 10 10 10s10-4.2 10-10Zm-9.998-1.069 3-3 1.06 1.061-3 3 3.01 3.009-1.062 1.06-3.008-3.008-3.01 3.01-1.061-1.06 3.01-3.01L7.94 8.99 9 7.93l3.002 3.002Z" fill="currentColor"/> </g> <g id="icon-chevron-down"> <path fill-rule="evenodd" clip-rule="evenodd" d="m11.776 14.42-4.95-4.95-1.06 1.061 4.95 4.95a1.75 1.75 0 0 0 2.474 0l4.95-4.95-1.06-1.06-4.95 4.95a.25.25 0 0 1-.354 0Z" fill="currentColor"/> </g> <g id="icon-chevron-left"> <path fill-rule="evenodd" clip-rule="evenodd" d="m10.08 11.87 4.95-4.95-1.061-1.06-4.95 4.95a1.75 1.75 0 0 0 0 2.474l4.95 4.95 1.06-1.06-4.95-4.95a.25.25 0 0 1 0-.354Z" fill="currentColor"/> </g> <g id="icon-chevron-right"> <path fill-rule="evenodd" clip-rule="evenodd" d="m14.42 12.224-4.95 4.95 1.061 1.06 4.95-4.95a1.75 1.75 0 0 0 0-2.474l-4.95-4.95-1.06 1.06 4.95 4.95a.25.25 0 0 1 0 .354Z" fill="currentColor"/> </g> <g id="icon-chevron-up"> <path fill-rule="evenodd" clip-rule="evenodd" d="m12.13 10.08 4.95 4.95 1.06-1.061-4.95-4.95a1.75 1.75 0 0 0-2.474 0l-4.95 4.95 1.06 1.06 4.95-4.95a.25.25 0 0 1 .354 0Z" fill="currentColor"/> </g> <g id="icon-envelope"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4 6.5h16a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5ZM2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7Zm4.416 1.376-.624-.416-.832 1.248.624.416 4.89 3.26a2.75 2.75 0 0 0 3.051 0l4.891-3.26.624-.416-.832-1.248-.624.416-4.89 3.26c-.42.28-.968.28-1.387 0l-4.891-3.26Z" fill="currentColor"/> </g> <g id="icon-facebook"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.226 1.27-2.995 2.14-5.318 2.328v-5.35h2.04l.39-2.61h-2.43v-1.695c0-.714.343-1.41 1.43-1.41H15.5v-2.22S14.495 7 13.537 7c-2.001 0-3.31 1.25-3.31 3.514v1.992H8v2.61h2.227v5.25c-1.93-.305-3.43-1.114-4.51-2.232C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5Zm-.472 18.492C5.516 21.787 2 17.654 2 12 2 6.1 5.6 2 12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10-.147 0-.293-.002-.437-.007l-.016.007-.019-.008Z" fill="currentColor"/> </g> <g id="icon-globe"> <path d="M19.4 4.8C17.6 3 15 2 12 2 8.9 2 6.4 3 4.6 4.8 2.9 6.6 2 9 2 12c0 2.9.9 5.4 2.6 7.2C6.4 21 9 22 12 22s5.6-1 7.4-2.8c1.7-1.8 2.6-4.3 2.6-7.2 0-2.9-.9-5.4-2.6-7.2Zm1.1 6.4H17c-.1-2.6-.5-4.8-1.3-6.5-.1-.3-.3-.6-.5-.8 1.2.4 2.2 1 3.1 1.8 1.3 1.5 2 3.3 2.2 5.5ZM12 20.5c-.9 0-1.7-.7-2.3-2-.7-1.4-1.1-3.4-1.2-5.8h7c-.1 2.3-.5 4.4-1.2 5.8-.6 1.3-1.4 2-2.3 2Zm-3.5-9.3c.1-2.3.5-4.3 1.2-5.8.6-1.3 1.4-1.9 2.3-1.9.9 0 1.7.7 2.3 1.9.7 1.4 1.1 3.4 1.2 5.8h-7ZM5.7 5.8C6.5 5 7.5 4.4 8.8 4c-.2.2-.4.5-.5.8-.8 1.6-1.2 3.8-1.3 6.4H3.5c.2-2.2.9-4 2.2-5.4Zm-2.2 6.9H7c.1 2.6.5 4.8 1.3 6.4.2.3.3.6.5.8-1.2-.4-2.2-1-3.1-1.9-1.3-1.2-2-3.1-2.2-5.3Zm14.8 5.4c-.8.9-1.9 1.5-3.1 1.9.2-.2.3-.5.5-.8.8-1.6 1.2-3.8 1.3-6.4h3.5c-.2 2.1-.9 4-2.2 5.3Z" fill="currentColor"/> </g> <g id="icon-google-podcasts"> <path d="M12 6.9c-.606 0-1.098-.476-1.098-1.063V4.562c0-.587.492-1.062 1.098-1.062.606 0 1.098.475 1.098 1.062v1.275c0 .587-.492 1.062-1.098 1.062ZM12 15.826c-.606 0-1.098-.476-1.098-1.063V9.24c0-.587.492-1.062 1.098-1.062.606 0 1.098.475 1.098 1.062v5.524c0 .587-.492 1.063-1.098 1.063ZM10.902 19.438c0 .587.492 1.062 1.098 1.062.606 0 1.098-.476 1.098-1.062v-1.275c0-.587-.492-1.063-1.098-1.063-.606 0-1.098.476-1.098 1.063v1.275ZM8.049 17.098c-.607 0-1.098-.476-1.098-1.063v-1.274c0-.587.491-1.063 1.098-1.063.606 0 1.097.476 1.097 1.063v1.274c0 .587-.49 1.063-1.097 1.063ZM14.854 9.24c0 .586.49 1.062 1.097 1.062s1.098-.476 1.098-1.063V7.964c0-.586-.491-1.062-1.098-1.062-.606 0-1.097.476-1.097 1.062V9.24ZM8.049 12.429c-.607 0-1.098-.476-1.098-1.062V7.542c0-.587.491-1.062 1.098-1.062.606 0 1.097.475 1.097 1.062v3.825c0 .586-.49 1.062-1.097 1.062ZM14.854 16.466c0 .587.49 1.062 1.097 1.062s1.098-.475 1.098-1.062V12.64c0-.586-.491-1.062-1.098-1.062-.606 0-1.097.476-1.097 1.062v3.825ZM4.098 13.704C3.49 13.704 3 13.228 3 12.64v-1.274c0-.587.491-1.063 1.098-1.063.606 0 1.097.476 1.097 1.063v1.274c0 .587-.491 1.063-1.097 1.063ZM18.805 12.641c0 .587.491 1.063 1.097 1.063.607 0 1.098-.476 1.098-1.063v-1.274c0-.587-.491-1.063-1.098-1.063-.606 0-1.097.476-1.097 1.063v1.274Z" fill="currentColor"/> </g> <g id="icon-instagram"> <path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H8A3.5 3.5 0 0 0 4.5 8v8A3.5 3.5 0 0 0 8 19.5h8a3.5 3.5 0 0 0 3.5-3.5V8A3.5 3.5 0 0 0 16 4.5ZM8 3a5 5 0 0 0-5 5v8a5 5 0 0 0 5 5h8a5 5 0 0 0 5-5V8a5 5 0 0 0-5-5H8Zm6.237 6.8C13.794 9.344 13.082 9 12 9c-1.11 0-1.818.347-2.25.796C9.308 10.253 9 10.976 9 12c0 .986.31 1.714.766 2.187.448.465 1.162.813 2.234.813s1.786-.348 2.234-.813C14.69 13.714 15 12.986 15 12c0-1.014-.313-1.738-.763-2.2ZM16.5 12c0-2.655-1.665-4.5-4.5-4.5-2.88 0-4.5 1.845-4.5 4.5 0 2.61 1.665 4.5 4.5 4.5s4.5-1.89 4.5-4.5ZM18 7c0-.59-.37-1-1-1-.64 0-1 .41-1 1 0 .58.37 1 1 1s1-.42 1-1Z" fill="currentColor"/> </g> <g id="icon-layer-group"> <path fill-rule="evenodd" clip-rule="evenodd" d="m6.09 7.984 5.672 3.166a.5.5 0 0 0 .486 0l5.665-3.132-5.672-3.166a.5.5 0 0 0-.485 0L6.09 7.983Zm-1.546.855 6.487 3.62a2 2 0 0 0 1.943.005l6.482-3.585.055-.03.703-.389a.5.5 0 0 0 .002-.874l-.702-.392-.054-.03-6.488-3.621a2 2 0 0 0-1.942-.004L4.548 7.123l-.055.03-.704.39a.5.5 0 0 0-.001.873l.701.392.055.03Zm2.254 6.758-1.543-.861-.706.39-.055.03-.703.39a.5.5 0 0 0-.002.873l.702.392.054.03h.001l6.487 3.621a2 2 0 0 0 1.942.004l6.482-3.584.055-.03.704-.39a.5.5 0 0 0 .002-.873l-.702-.392-.055-.03-.711-.398-1.546.855.71.397-5.665 3.133a.5.5 0 0 1-.485-.001l-5.672-3.166.706-.39Zm-1.543-4.861 1.543.86-.706.391 5.672 3.166a.5.5 0 0 0 .485 0l5.666-3.132-.712-.397 1.547-.855.71.397h.001l.055.031.702.392a.5.5 0 0 1-.002.874l-.704.389-.054.03-6.483 3.585a2 2 0 0 1-1.942-.004l-6.487-3.621-.055-.03-.702-.393a.5.5 0 0 1 .002-.874l.703-.389.055-.03.706-.39Z" fill="currentColor"/> </g> <g id="icon-linked-in"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.093 4a2.125 2.125 0 0 0-2.124 2.122c0 1.17.953 2.122 2.124 2.122 1.17 0 2.122-.952 2.122-2.122S7.263 4 6.093 4Zm1.61 5.14H4.486a.259.259 0 0 0-.258.26v10.34c0 .143.115.258.258.258h3.219a.259.259 0 0 0 .259-.258V9.4a.259.259 0 0 0-.26-.26Zm5.358.93c.58-.631 1.535-1.187 2.828-1.187 3.625 0 4.114 2.62 4.114 5.184v5.672a.259.259 0 0 1-.259.259h-3.213a.259.259 0 0 1-.258-.259v-5.028c0-1.407-.104-2.484-1.413-2.484-1.202 0-1.67.672-1.67 2.396v5.116a.259.259 0 0 1-.259.258H9.72a.259.259 0 0 1-.26-.258V9.399c0-.143.117-.26.26-.26h3.082c.143 0 .259.117.259.26v.671Z" fill="currentColor"/> </g> <g id="icon-magnifying-glass"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 4.5c1.726 0 2.943.538 3.726 1.319.785.783 1.274 1.952 1.274 3.484 0 1.495-.486 2.669-1.278 3.464-.787.792-2.006 1.34-3.722 1.34-1.716 0-2.935-.548-3.722-1.34-.792-.795-1.278-1.969-1.278-3.464 0-1.543.48-2.71 1.253-3.488C6.523 5.04 7.736 4.5 9.5 4.5Zm0-1.5C13.595 3 16 5.584 16 9.303c0 3.656-2.405 6.303-6.5 6.303-4.095 0-6.5-2.647-6.5-6.303C3 5.584 5.34 3 9.5 3Zm6.405 11.845a.75.75 0 1 0-1.06 1.06l5.5 5.5 1.06-1.06-5.5-5.5Z" fill="currentColor"/> </g> <g id="icon-play"> <path d="m7 20 10.002-6.155c1.374-.846 1.374-2.844 0-3.69L7 4v16Z" fill="currentColor"/> </g> <g id="icon-podcast"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.75 2.25v19.5h-1.5V2.25h1.5Zm3 17.5V4.25h-1.5v15.5h1.5Zm-6-12.5v9.5h-1.5v-9.5h1.5Zm12 3v3.5h-1.5v-3.5h1.5Zm-3 5.5v-7.5h-1.5v7.5h1.5Zm-13-4.25c.473 0 .75.307.75.75 0 .435-.277.75-.75.75S2 12.685 2 12.25c0-.443.27-.75.75-.75Zm19.25.75c0-.443-.277-.75-.75-.75-.48 0-.75.307-.75.75 0 .435.277.75.75.75s.75-.315.75-.75Z" fill="currentColor"/> </g> <g id="icon-print"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.5 3.5v4H6V2h12v5.5h-1.5v-4h-9ZM18 18h2a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2v4h12v-4Zm0-1.5h2a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5H4a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h2V14h12v2.5Zm-1.5 0v-1h-9v5h9v-4Z" fill="currentColor"/> </g> <g id="icon-quote"> <path d="M0 15.224v.147C0 18.375 2.32 20.5 5.366 20.5c3.045 0 5.22-2.125 5.22-5.13v-.146c0-2.345-1.305-4.103-3.408-4.836L9.208 3.5H3.77l-2.755 7.62C.29 12.88 0 14.126 0 15.225Zm13.414 0v.147c0 3.004 2.32 5.129 5.365 5.129 3.046 0 5.221-2.125 5.221-5.13v-.146c0-2.345-1.305-4.103-3.408-4.836l2.03-6.888h-5.438l-2.755 7.62c-.725 1.76-1.015 3.005-1.015 4.104Z" fill="currentColor"/> </g> <g id="icon-reddit"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2Zm4.693 5.963a.954.954 0 0 0-.94-.963.895.895 0 0 0-.493.145.93.93 0 0 0-.339.396l-2.183-.476a.257.257 0 0 0-.179.032.264.264 0 0 0-.105.152l-.665 3.226c-1.402.044-2.658.466-3.564 1.147a1.315 1.315 0 0 0-.907-.378c-.727 0-1.318.607-1.318 1.353 0 .261.073.517.212.736.138.22.336.393.569.498-.021.13-.033.271-.033.412C6.748 16.322 9.1 18 12.011 18c2.91 0 5.262-1.678 5.262-3.757 0-.134-.01-.268-.032-.4.432-.217.759-.694.759-1.246 0-.746-.59-1.353-1.318-1.353-.358 0-.675.14-.907.379-.897-.66-2.14-1.094-3.511-1.148l.6-2.89 1.952.422c.013.25.121.484.3.654a.925.925 0 0 0 1.306-.03.977.977 0 0 0 .27-.668Zm-7.709 5.598c0-.53.422-.964.94-.964.516 0 .937.433.937.964 0 .53-.421.963-.938.963a.953.953 0 0 1-.939-.963Zm4.134 0c0-.531.421-.964.938-.964.517 0 .939.434.939.964s-.422.963-.939.963a.953.953 0 0 1-.938-.963Zm-3.343 2.187a.243.243 0 0 1 .268-.055c.03.013.057.031.08.055.4.412 1.265.563 1.888.563.622 0 1.476-.152 1.887-.563a.245.245 0 0 1 .348 0 .283.283 0 0 1-.021.357c-.643.66-1.867.704-2.225.704-.358 0-1.592-.055-2.225-.704a.258.258 0 0 1 0-.357Z" fill="currentColor"/> </g> <g id="icon-rss"> <path d="M5.5 17c.945 0 1.5.615 1.5 1.5 0 .87-.555 1.5-1.5 1.5S4 19.37 4 18.5c0-.885.54-1.5 1.5-1.5Z" fill="currentColor"/> <path d="M18.405 20v.05H19.159V20A15.159 15.159 0 0 0 4 4.84h-.05V5.596H4a14.405 14.405 0 0 1 14.405 14.404Z" fill="currentColor" stroke="currentColor" stroke-width=".5"/> <path d="M12.06 19.997v.1h.568v-.1A8.628 8.628 0 0 0 4 11.37h-.1v.569H4a8.06 8.06 0 0 1 8.06 8.06Z" fill="currentColor" stroke="currentColor" stroke-width=".5"/> </g> <g id="icon-soundcloud"> <path d="M7 17h1.25V9.128a3.214 3.214 0 0 0-1.25.69V17Zm-2.5-5.325v5.316l.08.009h1.17v-5.334H4.58l-.08.009ZM2 14.332c0 .968.504 1.808 1.25 2.276V12.06A2.675 2.675 0 0 0 2 14.332ZM9.5 17h1.25V9.475A3.12 3.12 0 0 0 9.5 9.03V17Zm9.92-5.333h-.704c.036-.218.058-.439.058-.667 0-2.21-1.733-4-3.87-4-1.16 0-2.195.534-2.904 1.37V17h7.42c1.424 0 2.58-1.194 2.58-2.668 0-1.472-1.156-2.665-2.58-2.665Z" fill="currentColor"/> </g> <g id="icon-spotify"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2Zm3.355 14.164a.56.56 0 1 0 .586-.958c-2.372-1.45-5.313-1.787-8.741-1.003a.56.56 0 1 0 .25 1.094c3.132-.716 5.792-.424 7.905.867Zm.908-2.405a.702.702 0 0 0 .735-1.196c-2.779-1.707-6.842-2.188-10.11-1.196a.703.703 0 0 0 .407 1.343c2.862-.87 6.55-.438 8.968 1.049ZM6.867 9.935c2.77-.84 7.555-.682 10.456 1.04a.842.842 0 1 0 .86-1.447c-3.34-1.983-8.625-2.17-11.804-1.204a.842.842 0 0 0 .488 1.61Z" fill="currentColor"/> </g> <g id="icon-twitter"> <path d="M7.43644 0H0.0554206L9.23954 13.3075L0 24H2.56169L10.3768 14.9554L16.6191 24H24.0001L14.4803 10.2064L23.2993 0H20.7378L13.3428 8.55825L7.43644 0ZM11.6249 13.3737L3.58747 1.92749H6.256L20.4505 22.1423H17.7819L11.6249 13.3742V13.3737Z" fill="currentColor"/> </g> <g id="icon-user"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 4.5c.925 0 1.512.293 1.87.66.363.375.63.974.63 1.84 0 .84-.264 1.444-.634 1.829-.363.375-.952.671-1.866.671-.914 0-1.503-.296-1.866-.671C9.764 8.444 9.5 7.84 9.5 7c0-.877.263-1.474.62-1.844.348-.36.93-.656 1.88-.656ZM12 3c2.52 0 4 1.64 4 4 0 2.32-1.48 4-4 4S8 9.32 8 7c0-2.36 1.44-4 4-4Zm4.814 13.275C15.772 15.203 14.184 14.5 12 14.5c-2.23 0-3.812.706-4.84 1.771C6.123 17.346 5.5 18.943 5.5 21H4c0-4.72 2.88-8 8-8 5.04 0 8 3.28 8 8h-1.5c0-2.046-.637-3.645-1.686-4.725Z" fill="currentColor"/> </g> <g id="icon-video"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4 6.5h16a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5ZM2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7Zm11.57 5.857L10 15V9l3.57 2.143a1 1 0 0 1 0 1.714Z" fill="currentColor"/> </g> <g id="icon-youtube"> <path d="M12 4.856c-.603 0-5.922.012-7.417.407A3.06 3.06 0 0 0 2.41 7.41C2.005 8.91 2 11.874 2 11.998c0 .125.005 3.088.412 4.59a3.06 3.06 0 0 0 2.172 2.147c1.494.394 6.814.406 7.415.406s5.922-.012 7.417-.408a3.06 3.06 0 0 0 2.172-2.146c.407-1.503.412-4.464.412-4.589 0-.124-.005-3.087-.412-4.588a3.06 3.06 0 0 0-2.172-2.147c-1.494-.395-6.814-.407-7.415-.407h-.002Zm0 12.782c-1.58 0-5.92-.065-7.023-.357A1.54 1.54 0 0 1 3.882 16.2c-.356-1.312-.361-4.172-.361-4.2 0-.03.005-2.89.36-4.202a1.54 1.54 0 0 1 1.096-1.082c1.102-.291 5.443-.356 7.022-.356 1.58 0 5.92.065 7.023.356.534.142.954.556 1.095 1.082.356 1.313.36 4.173.36 4.201 0 .029-.004 2.89-.36 4.201a1.541 1.541 0 0 1-1.095 1.082c-1.103.292-5.444.357-7.023.357Z" fill="currentColor"/> <path d="m14.41 11.997-3.598 2.399V9.598l3.599 2.4Z" fill="currentColor" stroke="currentColor"/> </g> <g id="icon-xing" > <path d="M6.08293 6.85766C5.93537 6.85766 5.81119 6.90951 5.74854 7.01091C5.68394 7.11555 5.69372 7.25044 5.76265 7.38695L7.42041 10.2566C7.42321 10.2621 7.42321 10.2656 7.42041 10.2706L4.81533 14.8677C4.74741 15.003 4.75073 15.139 4.81533 15.2438C4.87789 15.3447 4.98813 15.411 5.13586 15.411H7.5876C7.95412 15.411 8.13101 15.1636 8.2563 14.9375C8.2563 14.9375 10.804 10.4317 10.9032 10.2567C10.8932 10.2406 9.21765 7.31742 9.21765 7.31742C9.09533 7.10008 8.91114 6.85757 8.5351 6.85757L6.08293 6.85766Z" fill="currentColor"/> <path d="M16.3825 3.50025C16.0162 3.50025 15.8575 3.73095 15.726 3.96725C15.726 3.96725 10.4441 13.3342 10.27 13.6418C10.279 13.6584 13.7537 20.033 13.7537 20.033C13.8754 20.2504 14.0632 20.5 14.4388 20.5H16.8876C17.0354 20.5 17.1508 20.4444 17.213 20.3433C17.2784 20.2388 17.2766 20.1005 17.208 19.9644L13.7515 13.6493C13.7499 13.647 13.7491 13.6442 13.7491 13.6413C13.7491 13.6384 13.7499 13.6356 13.7515 13.6333L19.1799 4.03507C19.2482 3.89958 19.2496 3.76138 19.1851 3.65666C19.1225 3.55568 19.0068 3.5 18.859 3.5L16.3825 3.50025Z" fill="currentColor"/> </g> </defs> </svg> <div id="page" class="site"> <header class="header header--bg-iw-gray"> <div id="primaryNav" class="container header__container"> <!-- header logo --> <div class="header__logo-container"> <a href="https://www.infoworld.com" aria-label="Home page"> <svg width="149" height="30" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 74"><defs><style>.cls-1{fill:none;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><g id="InfoWorld"><polygon points="0.53 3.28 0.53 11.67 8.67 11.67 8.67 63.88 0.53 63.88 0.53 72.3 29.17 72.3 29.17 63.88 20.89 63.88 20.89 11.67 29.17 11.67 29.17 3.28 0.53 3.28"/><path d="M46.72,24.8,44.22,27V20.15H25.91V28.2h6.18v44H44.24c0-1.42,0-36.91,0-36.91l.54-.44C48,32.28,51.17,31,54.31,31A5.28,5.28,0,0,1,59,33.28c.87,1.35,1.3,3.53,1.3,6.84V72.19H72.47c0-1.41,0-33.41,0-33.41,0-13.12-4.2-19.51-12.84-19.51-4.31,0-8.66,1.87-12.93,5.53"/><path d="M83.11,5.38h0a18.25,18.25,0,0,0-4,12v2.35H73.66v8.48h5.48V72.3H90.35V28.21H101.9V19.73H90.44V16.54c0-5.16,1.79-6.94,4.5-8,2.47-1,6.52-.79,10,1.24V2.82A25.63,25.63,0,0,0,94.84.7c-5,0-9.26,1.71-11.73,4.68"/><path d="M112.33,46.5c0-12.37,4.17-18.65,12.38-18.65a10.69,10.69,0,0,1,9.29,5c2.12,3.11,3.2,7.43,3.2,12.83,0,6.13-1.11,10.74-3.31,13.72a10.93,10.93,0,0,1-9.18,4.74,10.32,10.32,0,0,1-9.49-5.34,24,24,0,0,1-2.89-12.31M106.71,26h0c-4.93,4.82-7.41,11.57-7.41,20s2.48,15.21,7.41,20a25,25,0,0,0,18.05,7.19A24.73,24.73,0,0,0,142.91,66c4.86-4.87,7.32-11.57,7.32-20s-2.49-15.22-7.39-20a26.29,26.29,0,0,0-36.13,0"/><path d="M224.75,46.5c0-12.37,4.16-18.65,12.36-18.65a10.73,10.73,0,0,1,9.31,5c2.11,3.11,3.17,7.43,3.17,12.83,0,6.13-1.1,10.74-3.3,13.72a10.92,10.92,0,0,1-9.18,4.74,10.31,10.31,0,0,1-9.48-5.34,24.06,24.06,0,0,1-2.88-12.31M219.13,26h0c-4.93,4.82-7.43,11.57-7.43,20s2.5,15.21,7.43,20A26.26,26.26,0,0,0,255.32,66c4.86-4.87,7.32-11.57,7.32-20s-2.49-15.22-7.4-20a26.26,26.26,0,0,0-36.11,0"/><path d="M279.68,33.37V20.15H262.8V28.2h4.9s0,42.56,0,44h12.21V53.75c0-4.85.27-8.88,1.8-12.33,1.61-3.62,3.74-6,6.33-7.16a26.8,26.8,0,0,1,8.57-1.51V19.3c-5.48,0-13.95,5.73-16.89,14.07"/><polygon points="295.59 1.12 295.59 9.85 300.01 9.85 300.01 72.3 312.36 72.3 312.36 1.12 295.59 1.12"/><path d="M337.76,64.15c-3.71,0-6.52-1.79-8.35-5.34a26.62,26.62,0,0,1-2.55-12.31c0-12.37,3.67-18.65,10.9-18.65,3.45,0,6.21,1.68,8.19,5,1.86,3.11,2.81,7.43,2.81,12.83,0,6.13-1,10.74-2.92,13.72-2,3.15-4.76,4.74-8.08,4.74m4.54-63V9.85h4.77v14a15.41,15.41,0,0,0-11.25-5c-5.72,0-10.62,2.43-14.57,7.19s-6,11.56-6,20,2,15.21,6,20,8.85,7.19,14.57,7.19a15.78,15.78,0,0,0,11.25-5v3.86h12.4V1.12Z"/><path d="M200,3v9.25h5.56l-9,40.57L187,3.07h0V3H170.84v9.25h6.35l0,.24L168.6,52.91l-9.75-40.66h6V3H141.63v9.25h4.87S161.8,71,162.09,72h10l9.27-40.83,9,40.83h10.77c.3-1,13.6-59.7,13.6-59.7h5.13V3Z"/></g><rect class="cls-1" width="360" height="74"/></g></g></svg> </a> </div> <nav class="header__nav"> <!-- primary menu nevigation --> <div class="header__nav-left"> <ul class="header__nav-items"> <li class="header__nav-item"> <button class="header__nav-link" type="button" aria-label="Open topics menu" data-menu-trigger="topics"> <span> <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-layer-group"></use> </svg> Topics </span> </button> </li> <li class='header__nav-item'><a class='header__nav-link' href='https://www.infoworld.com/spotlight-ai-in-enterprise/'>Spotlight: AI in Enterprise</a></li><li class='header__nav-item'><a class='header__nav-link' href='https://www.infoworld.com/videos/'>Videos</a></li><li class='header__nav-item'><a class='header__nav-link' href='/newsletters/signup/'>Newsletters</a></li><li class='header__nav-item'><a class='header__nav-link' href='https://us.resources.infoworld.com/'>Resources</a></li> </ul> </div> <!-- right side header navigation --> <div class="header__nav-right"> <button class="header__icon-button" type="button" aria-label="Open search" data-menu-trigger="search" > <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" > <use xlink:href="#icon-magnifying-glass"></use> </svg> </button> <button class="header__main-menu-button header__main-menu-button--mobile" type="button" aria-label="Open main menu" data-menu-trigger="main-mobile"> <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-bars"></use> </svg> </button> <button class="header__main-menu-button" type="button" aria-label="Open main menu" data-menu-trigger="main"> <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-bars"></use> </svg> </button> </div> <!-- right section menu container --> <div class="header__menu" data-menu="main"> <div class="container container--no-padding header__menu-container"> <button class="header__menu-close-main-button" type="button" aria-label="Close main menu" data-menu-close="main"> <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-xmark"></use> </svg> </button> <div class="container grid header__menu-content"><div class="col-12 col-3@lg"><h2 class="header__menu-title header__menu-title--large">About</h2><ul class="header__menu-items"><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/about-us/">About us</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/our-brands/infoworld/">Advertise</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/contact-us/">Contact Us</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/work-here/">Foundry Careers</a></li><li class="header__menu-item"><a class="header__menu-link" href="/newsletters/signup/">Newsletters</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/contact-us/#republication-permissions">Reprints</a></li></ul></div><div class="col-12 col-3@lg"><h2 class="header__menu-title header__menu-title--large">Policies</h2><ul class="header__menu-items"><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/terms-of-service-agreement/">Terms of Service</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/privacy-policy/">Privacy Policy</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/cookie-policy/">Cookie Policy</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/copyright-notice/">Copyright Notice</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/member-preferences/">Member Preferences</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/about-adchoices/">About AdChoices</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/e-commerce-affiliate-relationships/">E-commerce Affiliate Relationships</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/your-california-privacy-rights/">Your California Privacy Rights</a></li></ul></div><div class="col-12 col-3@lg"><h2 class="header__menu-title header__menu-title--large">Our Network</h2><ul class="header__menu-items"><li class="header__menu-item"><a class="header__menu-link" href="https://www.cio.com/">CIO</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.computerworld.com/">Computerworld</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.csoonline.com/">CSO</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.networkworld.com/">Network World</a></li></ul></div><div class="col-12 col-3@lg"><h2 class="header__menu-title header__menu-title--large">More</h2><ul class="header__menu-items"><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/blogs/">Blogs</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/brandposts/">BrandPosts</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/events/">Events</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/videos/">Videos</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/enterprise-buyers-guide/">Enterprise Buyer鈥檚 Guides</a></li></div> </div> </div> </nav> </div> <!-- Topic menu --> <div class="header__menu" data-menu="topics"> <div class="container container--no-padding header__menu-container"> <div class="container grid header__menu-content"> <div class="header__menu-close-button"> <button class="button button--quaternary" type="button" data-menu-close="topics" aria-label="Close topics menu"> <span>Close</span> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-xmark"></use> </svg> </span> </button> </div> <div class='col-12 col-6@lg'> <ul class='header__menu-items header__menu-items--large'><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/analytics/'>Analytics</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/artificial-intelligence/'>Artificial Intelligence</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/generative-ai/'>Generative AI</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/careers/'>Careers</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/cloud-computing/'>Cloud Computing</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/data-management/'>Data Management</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/database/'>Databases</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/emerging-technology/'>Emerging Technology</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/technology-business/'>Technology Industry</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/security/'>Security</a></li></ul></div><div class='col-12 col-6@lg'> <ul class='header__menu-items header__menu-items--large'><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/software-development/'>Software Development</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/microsoft-net/'>Microsoft .NET</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/development-tools/'>Development Tools</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/devops/'>Devops</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/open-source/'>Open Source</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/programming-languages/'>Programming Languages</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/java/'>Java</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/javascript/'>JavaScript</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/python/'>Python</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/enterprise-buyers-guide/'>Enterprise Buyer鈥檚 Guides</a></li></ul></div> </div> </div> </div> <!-- edition menu --> <div class="header__menu" data-menu="location"> <div class="container container--no-padding header__menu-container"> <div class="header__menu-back-button"> <button class="button button--quaternary" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-chevron-left"></use> </svg> </span> <span>Back</span> </button> </div> <div class="container grid header__menu-content"> <div class="header__menu-close-button"> <button class="button button--quaternary" type="button" data-menu-close="location" aria-label="Close location menu"> <span>Close</span> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-xmark"></use> </svg> </span> </button> </div> </div> </div> </div> <div class="header__menu header__menu--inverted" data-menu="search"> <div class="header__menu-container"> <div class="header__menu-back-button"> <button class="button button--quaternary" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-chevron-left"></use> </svg> </span> <span>Back</span> </button> </div> <div class="container header__menu-content"> <div class="header__menu-close-button"> <button class="button button--quaternary" type="button" data-menu-close="search" aria-label="Close search"> <span>Close</span> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-xmark"></use> </svg> </span> </button> </div> <div class="google-programmable-search"> <div class="google-programmable-search__searchbox"> <div class="gcse-searchbox-only" data-resultsUrl="https://www.infoworld.com/search"></div> </div> <div class="grid google-programmable-search__popular-topics-container"> <div class="col-12 google-programmable-search__popular-topics-title"> Popular Topics </div> <div class="col-12 col-6@lg"> <div class='grid grid--cols-6@lg'> <ul class='col-12 col-6@md col-3@lg google-programmable-search__menu-items'><li><a class='google-programmable-search__menu-link' href='https://www.infoworld.com/artificial-intelligence/'>Artificial Intelligence</a></li><li><a class='google-programmable-search__menu-link' href='https://www.infoworld.com/cloud-computing/'>Cloud Computing</a></li></ul><ul class='col-12 col-6@md col-3@lg google-programmable-search__menu-items'><li><a class='google-programmable-search__menu-link' href='https://www.infoworld.com/data-management/'>Data Management</a></li><li><a class='google-programmable-search__menu-link' href='https://www.infoworld.com/software-development/'>Software Development</a></li></ul></div> </div> </div> </div> </div> </div> </div> <div id="primaryNav" class="header__menu" data-menu="main-mobile"> <div class="container container--no-padding header__menu-container"> <button class="header__menu-close-main-button" type="button" aria-label="Close main menu" data-menu-close="main-mobile"> <svg class="icon icon--lg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-xmark"></use> </svg> </button> <div class="container grid header__menu-content"> <div class="col-12"> <ul class="header__menu-items header__menu-items--small"> <li class="header__menu-item"> <button class="header__menu-link" type="button" aria-label="Open search" data-menu-trigger="search"> <span> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-magnifying-glass"></use> </svg> </span> <span>Search</span> </button> </li> </ul> </div> <div class="col-12"> <ul class="header__menu-items"> <li class="header__menu-item"> <button class="header__menu-link" type="button" aria-label="Open topics menu" data-menu-trigger="topics-mobile"> <span>Topics</span> <span> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-layer-group"></use> </svg> </span> </button> </li> <li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/spotlight-ai-in-enterprise/'>Spotlight: AI in Enterprise</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/videos/'>Videos</a></li><li class='header__menu-item'><a class='header__menu-link' href='/newsletters/signup/'>Newsletters</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://us.resources.infoworld.com/'>Resources</a></li><li class='header__menu-item'><button class='header__menu-link' type='button' data-menu-trigger='hamburger-100007742'>About</button><li class='header__menu-item'><button class='header__menu-link' type='button' data-menu-trigger='hamburger-100007749'>Policies</button><li class='header__menu-item'><button class='header__menu-link' type='button' data-menu-trigger='hamburger-100007758'>Our Network</button><li class='header__menu-item'><button class='header__menu-link' type='button' data-menu-trigger='hamburger-100007763'>More</button> </ul> </div> </div> </div> </div> <div class="header__menu" data-menu="topics-mobile"> <div class="container container--no-padding header__menu-container"> <div class="header__menu-back-button"> <button class="button button--quaternary" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <span> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-circle-chevron-left"></use> </svg> </span> <span>Back</span> </button> </div> <div class="container grid header__menu-content"> <div class="col-12"> <h2 class="header__menu-title"> <span>Topics</span> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-layer-group"></use> </svg> </h2> <ul class="header__menu-items header__menu-items--small header__menu-items--divider"> <li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/analytics/'>Analytics</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/artificial-intelligence/'>Artificial Intelligence</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/generative-ai/'>Generative AI</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/careers/'>Careers</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/cloud-computing/'>Cloud Computing</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/data-management/'>Data Management</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/database/'>Databases</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/emerging-technology/'>Emerging Technology</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/technology-business/'>Technology Industry</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/security/'>Security</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/software-development/'>Software Development</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/microsoft-net/'>Microsoft .NET</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/development-tools/'>Development Tools</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/devops/'>Devops</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/open-source/'>Open Source</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/programming-languages/'>Programming Languages</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/java/'>Java</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/javascript/'>JavaScript</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/python/'>Python</a></li><li class='header__menu-item'><a class='header__menu-link' href='https://www.infoworld.com/enterprise-buyers-guide/'>Enterprise Buyer鈥檚 Guides</a></li> </ul> </div> </div> </div> </div> <!-- hamburger menu --> <div class="header__menu" data-menu="hamburger-100007742"> <div class="container header__menu-container"> <button class="button button--quaternary header__menu-back-button" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <circle cx="12" cy="12" r="9" stroke="currentColor" /> <path d="m9.976 11.22.312.39-.312-.39Zm4.336 4.39-4.024-3.22-.624.781 4.024 3.22.624-.781Zm-4.024-4 4.024-3.22-.624-.78-4.024 3.219.624.78Zm0 .78a.5.5 0 0 1 0-.78l-.624-.781a1.5 1.5 0 0 0 0 2.342l.624-.78Z" fill="currentColor" /> </svg> Back </button> <div class="grid header__menu-content"> <button class="header__menu-close-button" type="button" aria-label="Close hamburger menu" data-menu-close="hamburger"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <path stroke="currentColor" stroke-width="2" d="M1.293 22.506 22.506 1.293M1.707 1.293 22.92 22.506" /> </svg> </button> <div class="col-12 col-2@lg"><h2 class="header__menu-title">About</h2><ul class="header__menu-items header__menu-items--small header__menu-items--divider"><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/about-us/">About us</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/our-brands/infoworld/">Advertise</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/contact-us/">Contact Us</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/work-here/">Foundry Careers</a></li><li class="header__menu-item"><a class="header__menu-link" href="/newsletters/signup/">Newsletters</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/contact-us/#republication-permissions">Reprints</a></li></ul></div> </div> </div> </div> <div class="header__menu" data-menu="hamburger-100007749"> <div class="container header__menu-container"> <button class="button button--quaternary header__menu-back-button" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <circle cx="12" cy="12" r="9" stroke="currentColor" /> <path d="m9.976 11.22.312.39-.312-.39Zm4.336 4.39-4.024-3.22-.624.781 4.024 3.22.624-.781Zm-4.024-4 4.024-3.22-.624-.78-4.024 3.219.624.78Zm0 .78a.5.5 0 0 1 0-.78l-.624-.781a1.5 1.5 0 0 0 0 2.342l.624-.78Z" fill="currentColor" /> </svg> Back </button> <div class="grid header__menu-content"> <button class="header__menu-close-button" type="button" aria-label="Close hamburger menu" data-menu-close="hamburger"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <path stroke="currentColor" stroke-width="2" d="M1.293 22.506 22.506 1.293M1.707 1.293 22.92 22.506" /> </svg> </button> <div class="col-12 col-2@lg"><h2 class="header__menu-title">Policies</h2><ul class="header__menu-items header__menu-items--small header__menu-items--divider"><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/terms-of-service-agreement/">Terms of Service</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/privacy-policy/">Privacy Policy</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/cookie-policy/">Cookie Policy</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://foundryco.com/copyright-notice/">Copyright Notice</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/member-preferences/">Member Preferences</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/about-adchoices/">About AdChoices</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/e-commerce-affiliate-relationships/">E-commerce Affiliate Relationships</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/your-california-privacy-rights/">Your California Privacy Rights</a></li></ul></div> </div> </div> </div> <div class="header__menu" data-menu="hamburger-100007758"> <div class="container header__menu-container"> <button class="button button--quaternary header__menu-back-button" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <circle cx="12" cy="12" r="9" stroke="currentColor" /> <path d="m9.976 11.22.312.39-.312-.39Zm4.336 4.39-4.024-3.22-.624.781 4.024 3.22.624-.781Zm-4.024-4 4.024-3.22-.624-.78-4.024 3.219.624.78Zm0 .78a.5.5 0 0 1 0-.78l-.624-.781a1.5 1.5 0 0 0 0 2.342l.624-.78Z" fill="currentColor" /> </svg> Back </button> <div class="grid header__menu-content"> <button class="header__menu-close-button" type="button" aria-label="Close hamburger menu" data-menu-close="hamburger"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <path stroke="currentColor" stroke-width="2" d="M1.293 22.506 22.506 1.293M1.707 1.293 22.92 22.506" /> </svg> </button> <div class="col-12 col-2@lg"><h2 class="header__menu-title">Our Network</h2><ul class="header__menu-items header__menu-items--small header__menu-items--divider"><li class="header__menu-item"><a class="header__menu-link" href="https://www.cio.com/">CIO</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.computerworld.com/">Computerworld</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.csoonline.com/">CSO</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.networkworld.com/">Network World</a></li></ul></div> </div> </div> </div> <div class="header__menu" data-menu="hamburger-100007763"> <div class="container header__menu-container"> <button class="button button--quaternary header__menu-back-button" type="button" data-menu-trigger="main-mobile" aria-label="Back to main menu"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <circle cx="12" cy="12" r="9" stroke="currentColor" /> <path d="m9.976 11.22.312.39-.312-.39Zm4.336 4.39-4.024-3.22-.624.781 4.024 3.22.624-.781Zm-4.024-4 4.024-3.22-.624-.78-4.024 3.219.624.78Zm0 .78a.5.5 0 0 1 0-.78l-.624-.781a1.5 1.5 0 0 0 0 2.342l.624-.78Z" fill="currentColor" /> </svg> Back </button> <div class="grid header__menu-content"> <button class="header__menu-close-button" type="button" aria-label="Close hamburger menu" data-menu-close="hamburger"> <svg class="icon icon--sm" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <path stroke="currentColor" stroke-width="2" d="M1.293 22.506 22.506 1.293M1.707 1.293 22.92 22.506" /> </svg> </button> <div class="col-12 col-2@lg"><h2 class="header__menu-title">More</h2><ul class="header__menu-items header__menu-items--small header__menu-items--divider"><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/blogs/">Blogs</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/brandposts/">BrandPosts</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/events/">Events</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/videos/">Videos</a></li><li class="header__menu-item"><a class="header__menu-link" href="https://www.infoworld.com/enterprise-buyers-guide/">Enterprise Buyer鈥檚 Guides</a></li> </header> <div class="advert-sticky ad ad-banner has-ad-prefix is-sticky page-ad advert--bg-iw-gray" data-ad-template="banner" data-ofp="false"></div><div class="advert"> <div class="container advert__container"> <div class="advert__content"><div class="ad ad-overlay" data-ad-template="overlay" data-ofp="true"></div></div></div></div><div class="advert"> <div class="container advert__container"> <div class="advert__content"><div class="ad ad-skin" data-ad-template="skin" data-ofp="true"></div></div></div></div> <main id="primary" class="site-main static-page-wrapper"> <section class="topic-hero topic-hero--bg-iw-gray"> <div class="container"> <div class="topic-hero__breadcrumbs"> <div class="breadcrumbs"> <a class="breadcrumbs__item" href="https://www.infoworld.com/">Home</a><a class="breadcrumbs__item" href="">Programming Languages</a></div> </div> <div class="topic-hero__container"> <div class="topic-hero__content"> <h1 class="topic-hero__title">Programming Languages</h1> <p class="topic-hero__description">Programming Languages | News, how-tos, features, reviews, and videos </p> </div> <div class="topic-hero__links"> <div class="jump-links"> <div class="jump-links__text">Jump to</div> <div class="jump-links__links"> <a class="chip chip--anchor" href="#latest">Latest</a> <a class="chip chip--anchor" href="#article">Articles</a> <a class="chip chip--anchor" href="#upcoming_events">Events</a> <a class="chip chip--anchor" href="#resources">Resources</a> <a class="chip chip--anchor" href="#podcast">Podcasts</a> </div> </div> </div> </div> </div> </section> <article id="post-100007618" class="post-100007618 page type-page status-publish"> <div class="entry-content"> <div id="remove_no_follow"> <section class="wp-block-bigbite-multi-title"><div class="container"></div></section> <section class="latest-content " id="latest"> <div class="container"><div class="latest-content__head"></div><div class="grid latest-content__content"><div class="col-12 col-7@md col-8@lg"><div class="latest-content__content-featured"><a class="card card--xxl " href="https://www.infoworld.com/article/3610639/kotlin-for-java-developers-concurrency-with-coroutines.html" aria-label="Go to content"><div class="card__header"><span class="card__content-type">how-to</span></div><div class="card__image"><div class="insider-image"><div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?quality=50&strip=all&w=1046" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?quality=50&strip=all 5495w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=300%2C200&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=768%2C512&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=1024%2C683&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=1536%2C1024&quality=50&strip=all 1536w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=2048%2C1365&quality=50&strip=all 2048w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=1240%2C826&quality=50&strip=all 1240w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=150%2C100&quality=50&strip=all 150w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=1046%2C697&quality=50&strip=all 1046w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=252%2C168&quality=50&strip=all 252w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=126%2C84&quality=50&strip=all 126w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=720%2C480&quality=50&strip=all 720w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=540%2C360&quality=50&strip=all 540w, https://www.infoworld.com/wp-content/uploads/2024/11/3610639-0-55243400-1732698118-shutterstock_editorial_1415330987.jpg?resize=375%2C250&quality=50&strip=all 375w" data-id="idg_render_hero_index_one_card_image" sizes=" (min-resolution: 3dppx) and (max-width: 600px) 900px, (min-resolution: 3dppx) and (max-width: 1200px) 1200px, (min-resolution: 2dppx) and (max-width: 600px) 900px, (min-resolution: 2dppx) and (max-width: 1200px) 1200px, (min-resolution: 1dppx) and (max-width: 600px) 900px, (min-resolution: 1dppx) and (max-width: 2000px) 1300px" alt="Image" loading="eager" width="400px"></div></div></div><h4 class="card__title" id="kotlin-for-java-developers-concurrency-with-coroutines">Kotlin for Java developers: Concurrency with coroutines</h4><p class="card__description">Get a quick introduction to the most interesting parts of writing concurrent programs in Kotlin, including dispatchers, contexts, channels, and flows. </p><div class="card__info"><span>By Matthew Tyson</span></div><div class="card__info card__info--light"><span>Nov 27, 2024</span><span>10 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></a> </div><div class="grid grid--cols-7@md grid--cols-8@lg latest-content__content-main"><div class="col-12 col-7@md col-4@lg latest-content__card-main"><a class="card " href="https://www.infoworld.com/article/3609676/python-to-c-whats-new-in-cython-3-1.html" aria-label="Go to content"><div class="card__header"><span class="card__content-type">feature</span></div><div class="card__image"> <div class="insider-image"><div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?quality=50&strip=all&w=1240" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?quality=50&strip=all 8688w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=300%2C106&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=768%2C271&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=1024%2C361&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=1536%2C542&quality=50&strip=all 1536w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=2048%2C722&quality=50&strip=all 2048w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=1240%2C437&quality=50&strip=all 1240w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=150%2C53&quality=50&strip=all 150w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=854%2C301&quality=50&strip=all 854w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=640%2C226&quality=50&strip=all 640w, https://www.infoworld.com/wp-content/uploads/2024/11/3609676-0-75520600-1732698157-shutterstock_1950450646.jpg?resize=444%2C157&quality=50&strip=all 444w" data-id="idg_render_hero_index_two_three_break" sizes="(min-resolution: 3dppx) and (max-width: 600px) 600px, (min-resolution: 3dppx) and (max-width: 1200px) 900px, (min-resolution: 2dppx) and (max-width: 600px) 600px, (min-resolution: 2dppx) and (max-width: 1200px) 900px, (min-resolution: 1dppx) and (max-width: 600px) 600px, (min-resolution: 1dppx) and (max-width: 2000px) 1024px" alt="Image" loading="lazy" width="400px"></div></div></div><h4 class="card__title" id="python-to-c-whats-new-in-cython-3-1">Python to C: What’s new in Cython 3.1</h4><div class="card__info"><span>By Serdar Yegulalp</span></div><div class="card__info card__info--light"><span>Nov 27, 2024</span><span>5 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">C Language</span></span><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></a></div><div class="col-12 col-7@md col-4@lg latest-content__card-main"><span class="nativo-loading"></span><a id="nativofeatuedmed-1" class="card nativo" href="https://www.infoworld.com/article/3612366/a-software-developer-gives-thanks.html" backfill="true" aria-label="Go to content"><div class="card__header"><span class="card__content-type">opinion</span></div><div class="card__image"> <div class="insider-image"><div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?quality=50&strip=all&w=887" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?quality=50&strip=all 6491w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=300%2C236&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=768%2C603&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=1024%2C805&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=1536%2C1207&quality=50&strip=all 1536w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=2048%2C1609&quality=50&strip=all 2048w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=887%2C697&quality=50&strip=all 887w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=214%2C168&quality=50&strip=all 214w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=107%2C84&quality=50&strip=all 107w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=611%2C480&quality=50&strip=all 611w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=458%2C360&quality=50&strip=all 458w, https://www.infoworld.com/wp-content/uploads/2024/11/3612366-0-15471600-1732698229-shutterstock_2412546957.jpg?resize=318%2C250&quality=50&strip=all 318w" data-id="idg_render_hero_index_two_three_break" sizes="(min-resolution: 3dppx) and (max-width: 600px) 600px, (min-resolution: 3dppx) and (max-width: 1200px) 900px, (min-resolution: 2dppx) and (max-width: 600px) 600px, (min-resolution: 2dppx) and (max-width: 1200px) 900px, (min-resolution: 1dppx) and (max-width: 600px) 600px, (min-resolution: 1dppx) and (max-width: 2000px) 1024px" alt="Image" loading="lazy" width="400px"></div></div></div><h4 class="card__title" id="a-software-developer-gives-thanks">A software developer gives thanks</h4><div class="card__info"><span>By Nick Hodges</span></div><div class="card__info card__info--light"><span>Nov 27, 2024</span><span>5 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Development Tools</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></a></div></div></div><div class="col-12 col-5@md col-4@lg latest-content__content-secondary"><div class="latest-content__card-secondary"><a class="card " href="https://www.infoworld.com/article/3613358/kotlin-to-lose-scripting-features.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">news</span></div><h4 class="card__title" id="kotlin-to-lose-scripting-features">Kotlin to lose scripting features</h4><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 26, 2024</span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Kotlin</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></a> </div><div class="latest-content__card-secondary"><span class="nativo-loading"></span><a id="nativocardgrid-1" class="card nativo" href="https://www.infoworld.com/article/3612364/uspto-petitioned-to-cancel-oracles-javascript-trademark.html" backfill="true" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">news</span></div><h4 class="card__title" id="uspto-petitioned-to-cancel-oracles-javascript-trademark">USPTO petitioned to cancel Oracle’s JavaScript trademark</h4><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 25, 2024</span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Technology Industry</span></span><span class="card__tag"><span class="tag">JavaScript</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></a> </div><div class="latest-content__card-secondary"><a class="card " href="https://www.infoworld.com/article/3612206/php-updates-dom-api.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">news</span></div><h4 class="card__title" id="php-updates-dom-api">PHP updates DOM API</h4><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 25, 2024</span><span>2 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Web Development</span></span><span class="card__tag"><span class="tag">PHP</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></a> </div><div class="latest-content__card-secondary"><a class="card " href="https://www.infoworld.com/article/3557641/typescript-5-7-arrives-with-improved-error-reporting.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">news</span></div><h4 class="card__title" id="typescript-5-7-arrives-with-improved-error-reporting">TypeScript 5.7 arrives with improved error reporting</h4><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 22, 2024</span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">JavaScript</span></span><span class="card__tag"><span class="tag">Typescript</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></a> </div><div class="latest-content__card-secondary"><a class="card " href="https://www.infoworld.com/article/3491404/jdk-24-the-new-features-in-java-24.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">news</span></div><h4 class="card__title" id="jdk-24-the-new-features-in-java-24">JDK 24: The new features in Java 24</h4><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 22, 2024</span><span>13 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></a> </div><div class="latest-content__card-secondary"><a class="card " href="https://www.infoworld.com/article/3595651/advanced-programming-with-java-generics.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">how-to</span></div><h4 class="card__title" id="advanced-programming-with-java-generics">Advanced programming with Java generics</h4><div class="card__info"><span>By Rafael del Nero</span></div> <div class="card__info card__info--light"><span>Nov 21, 2024</span><span>18 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></a> </div></div></div></div></section><div class="advert"> <div class="container advert__container"> <div class="advert__content"><div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div></div></div></div> <div class="content-listing-articles" id="article"><div class="container"><h2 class="content-listing-articles__title" id="articles">Articles</h2><div class="content-listing-articles__container content-listing-articles__container--collapsed" data-collapse-articles="6" data-content-listing-articles><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">feature</span></div><h4 class="card__title" id="what-is-rust-safe-fast-and-easy-software-development">What is Rust? Safe, fast, and easy software development</h4><p class="card__description">Unlike most programming languages, Rust doesn't make you choose between speed, safety, and ease of use. Find out how Rust delivers better code with fewer compromises, and a few downsides to consider before learning Rust.</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Serdar Yegulalp</span></div> <div class="card__info card__info--light"><span>Nov 20, 2024 </span><span>11 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Rust</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/3608206/kotlin-for-java-developers-classes-and-coroutines.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">how-to</span></div><h4 class="card__title" id="kotlin-for-java-developers-classes-and-coroutines">Kotlin for Java developers: Classes and coroutines</h4><p class="card__description">Kotlin was designed to bring more flexibility and flow to programming in the JVM. Here's an in-depth look at how Kotlin makes working with classes and objects easier and introduces coroutines to modernize concurrency. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Matthew Tyson</span></div> <div class="card__info card__info--light"><span>Nov 20, 2024 </span><span>9 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Kotlin</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></div></div></a></div><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/3608397/f-sharp-9-adds-nullable-reference-types.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">news</span></div><h4 class="card__title" id="f-9-adds-nullable-reference-types">F# 9 adds nullable reference types</h4><p class="card__description">Latest version of Microsoft’s functional .NEt programming language provides a type-safe way to handle reference types that can have null as a valid value. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 18, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Microsoft .NET</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/3607388/go-language-evolving-for-future-hardware-ai-workloads.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">news</span></div><h4 class="card__title" id="go-language-evolving-for-future-hardware-ai-workloads">Go language evolving for future hardware, AI workloads</h4><p class="card__description">The Go team is working to adapt Go to large multicore systems, the latest hardware instructions, and the needs of developers of large-scale AI systems. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 15, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Google Go</span></span><span class="card__tag"><span class="tag">Generative AI</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></div></div></a></div><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/3606874/the-1-python-ide-is.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">analysis</span></div><h4 class="card__title" id="and-the-1-python-ide-is">And the #1 Python IDE is . . .</h4><p class="card__description">PyCharm, VS Code, and five other popular Python IDEs duke it out. Which one do you think takes home the prize?</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Serdar Yegulalp</span></div> <div class="card__info card__info--light"><span>Nov 15, 2024 </span><span>2 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row "><a class="grid content-row-article" href="https://www.infoworld.com/article/3606753/rust-foundation-moves-forward-on-c-and-rust-interoperability.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">news</span></div><h4 class="card__title" id="rust-foundation-moves-forward-on-c-and-rust-interoperability">Rust Foundation moves forward on C++ and Rust interoperability</h4><p class="card__description">Problem statement released to address the challenges to making cross-language development with C++ and Rust more accessible and approachable. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 14, 2024 </span><span>2 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">C++</span></span><span class="card__tag"><span class="tag">Rust</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/3603580/kotlin-for-java-developers.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">how-to</span></div><h4 class="card__title" id="kotlin-for-java-developers-getting-started">Kotlin for Java developers: Getting started</h4><p class="card__description">Kotlin is a modern alternative to Java that supports functional programming in the JVM. Here's a first look at programming with Kotlin using some of the concepts and syntax you already know from Java.</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Matthew Tyson</span></div> <div class="card__info card__info--light"><span>Nov 13, 2024 </span><span>10 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/3603508/go-language-rises-in-tiobe-popularity-index.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">news</span></div><h4 class="card__title" id="go-language-rises-in-tiobe-popularity-index">Go language rises in Tiobe popularity index</h4><p class="card__description">Google-developed Go has reached an all time high ranking of seventh in the Tiobe index of programming language popularity. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Nov 12, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Google Go</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/3598939/12-java-enhancement-proposals-changing-java.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">how-to</span></div><h4 class="card__title" id="12-java-enhancement-proposals-changing-java">12 Java Enhancement Proposals changing Java</h4><p class="card__description">Take a tour of the leading in-flight proposals aimed at refactoring the JVM and expanding the Java language.</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Matthew Tyson</span></div> <div class="card__info card__info--light"><span>Nov 06, 2024 </span><span>10 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Java</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/3596388/python-is-the-most-popular-language-on-github.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">analysis</span></div><h4 class="card__title" id="python-is-the-most-popular-language-on-github">Python is the most popular language on GitHub</h4><p class="card__description">Python was in the spotlight all last month, with a new release and a couple of big wins. Here are our picks for the best news and tutorials for Python developers in October.</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Serdar Yegulalp</span></div> <div class="card__info card__info--light"><span>Nov 01, 2024 </span><span>2 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/2257425/python-threading-and-subprocesses-explained.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">feature</span></div><h4 class="card__title" id="python-threading-and-subprocesses-explained">Python threading and subprocesses explained</h4><p class="card__description">Python lets you parallelize workloads using threads, subprocesses, or both. Here's what you need to know about Python's thread and process pools and Python threads after Python 3.13.</p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Serdar Yegulalp</span></div> <div class="card__info card__info--light"><span>Oct 30, 2024 </span><span>9 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Concurrency</span></span><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Programming Languages</span></span></div></div></div></a></div><div class="content-listing-articles__row content-listing-articles__row--hide"><a class="grid content-row-article" href="https://www.infoworld.com/article/3594587/python-has-overtaken-javascript-on-github.html" aria-label="Go to content"><div class="col-12 col-7@md content-row-article__main"><div class="card card--lg"><div class="card__header"><span class="card__content-type">news</span></div><h4 class="card__title" id="python-has-overtaken-javascript-on-github">Python has overtaken JavaScript on GitHub</h4><p class="card__description">Python has become the most popular programming language on GitHub, while the use of Jupyter Notebooks has also soared, according to GitHub’s Octoverse 2024 report. </p></div></div><div class="col-12 col-4@md col-start-9@md content-row-article__secondary"><div class="card card--lg"><div class="card__info"><span>By Paul Krill</span></div> <div class="card__info card__info--light"><span>Oct 30, 2024 </span><span>2 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">GitHub</span></span><span class="card__tag"><span class="tag">JavaScript</span></span><span class="card__tag"><span class="tag">Python</span></span></div></div></div></a></div></div><div class="grid content-listing-articles__button-wrapper"> <div class="col-6 col-4@md col-start-5@md"><div class="content-listing-articles__button-show"> <button class="button button--tertiary" type="button" data-toggle="expand"> <span>Show more</span> <span> <svg class="icon icon--sm" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-chevron-down"></use> </svg> </span> </button> </div> <div class="content-listing-articles__button-show content-listing-articles__button-show--hide"> <button class="button button--tertiary" type="button" data-toggle="collapse"> <span>Show less</span> <span> <svg class="icon icon--sm" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-chevron-up"></use> </svg> </span> </button> </div></div><div class="col-6 col-4@md content-listing-articles__button-view-all"> <a class="button" href="https://www.infoworld.com/programming-languages/page/2/" target="_blank"> View all </a></div></div></div></div> <section class="related-content-video" id="video"><div class="container"><h2 class="related-content-video__title" id="video-on-demand">Video on demand</h2><div class="grid related-content-video__main"><div class="col-12 col-4@lg related-content-video__main-card"><a class="card card--xl" href="https://www.infoworld.com/video/3610353/text-drawing-and-screen-capture-with-pythons-pillow-library.html" aria-label="Go to content"><div class="card__header"> <span class="card__content-type">video</span></div><h4 class="card__title" id="text-drawing-and-screen-capture-with-pythons-pillow-library">Text drawing and screen capture with Python’s Pillow library</h4><p class="card__description">Python’s Pillow library, for image manipulation, has features above and beyond merely resizing, rotating, cropping, or recoloring images. In this video we’ll see how Pillow can be used to add text captions to image, take snapshots of the screen, or work with image data copied to the system clipboard. </p> <div class="card__info card__info--light"><span>Nov 25, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></a> <div class="related-content-video__social"> <div class="social-share-menu"><ul class="social-share-menu__buttons"> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="linked-in" aria-label="Share on LinkedIn"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-linked-in"></use></svg> </button></li> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="twitter" aria-label="Share on Twitter"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-twitter"></use></svg> </button></li> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="facebook" aria-label="Share on Facebook"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-facebook"></use></svg> </button></li> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="reddit" aria-label="Share on Reddit"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-reddit"></use></svg> </button></li> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="email" aria-label="Share via Email"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-envelope"></use></svg> </button></li> <li class="social-share-menu__button"><button class="social-share-button" type="button" data-platform="print" aria-label="Print"> <svg class="icon" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-print"></use></svg> </button></li></ul> </div></div></div><div class="col-12 col-8@lg related-content-video__video"><div class="youtube-video"><iframe width="560" height="315" src="https://www.youtube.com/embed/P_o-2EQBuk0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div></div></div><div class="related-content-video__cards-container"> <div class="related-content-video__cards-wrap"> <ul class="grid related-content-video__cards"><li class="col-4@md related-content-video__card"> <a class="related-content-video__card-link" href="https://www.infoworld.com/video/3610349/use-__main__-in-python-to-make-packages-runnable.html" aria-label="Go to content"> <div class="related-content-video__card-image"> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?w=300" alt="Image" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?quality=50&strip=all 1280w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=300%2C168&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=768%2C432&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=1024%2C576&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=1240%2C697&quality=50&strip=all 1240w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=150%2C84&quality=50&strip=all 150w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=854%2C480&quality=50&strip=all 854w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=640%2C360&quality=50&strip=all 640w, https://www.infoworld.com/wp-content/uploads/2024/11/3610349-0-91521800-1732285596-IFW24_040_main_py_THUMB.png?resize=444%2C250&quality=50&strip=all 444w" sizes="300px" loading="lazy" width="400px"></div></div><div class="card card--xs"><h4 class="card__title" id="use-__main__-in-python-to-make-packages-runnable">Use \”__main__\” in Python to make packages runnable</h4> <div class="card__info card__info--light"><span>Nov 22, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div></a></li><li class="col-4@md related-content-video__card"> <a class="related-content-video__card-link" href="https://www.infoworld.com/video/3606691/building-python-wheels-to-distribute-your-programs.html" aria-label="Go to content"> <div class="related-content-video__card-image"> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?w=300" alt="Image" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?quality=50&strip=all 1280w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=300%2C168&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=768%2C432&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=1024%2C576&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=1240%2C697&quality=50&strip=all 1240w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=150%2C84&quality=50&strip=all 150w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=854%2C480&quality=50&strip=all 854w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=640%2C360&quality=50&strip=all 640w, https://www.infoworld.com/wp-content/uploads/2024/11/3606691-0-19281700-1731680677-IFW24_039_build_wheel_THUMB.png?resize=444%2C250&quality=50&strip=all 444w" sizes="300px" loading="lazy" width="400px"></div></div><div class="card card--xs"><h4 class="card__title" id="building-python-wheels-to-distribute-your-programs">Building Python wheels to distribute your programs</h4> <div class="card__info card__info--light"><span>Nov 15, 2024 </span><span>6 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></a></li><li class="col-4@md related-content-video__card"> <a class="related-content-video__card-link" href="https://www.infoworld.com/video/3606689/creating-a-pip-install-able-python-package.html" aria-label="Go to content"> <div class="related-content-video__card-image"> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?w=300" alt="Image" srcset="https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?quality=50&strip=all 1280w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=300%2C168&quality=50&strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=768%2C432&quality=50&strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=1024%2C576&quality=50&strip=all 1024w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=1240%2C697&quality=50&strip=all 1240w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=150%2C84&quality=50&strip=all 150w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=854%2C480&quality=50&strip=all 854w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=640%2C360&quality=50&strip=all 640w, https://www.infoworld.com/wp-content/uploads/2024/11/3606689-0-04766500-1731610339-IFW24_038_pip_installable_THUMB.png?resize=444%2C250&quality=50&strip=all 444w" sizes="300px" loading="lazy" width="400px"></div></div><div class="card card--xs"><h4 class="card__title" id="creating-a-pip-install-able-python-package">Creating a pip install-able Python package</h4> <div class="card__info card__info--light"><span>Nov 14, 2024 </span><span>3 mins</span></div><div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span><span class="card__tag"><span class="tag">Software Development</span></span></div></div></a></li></ul></div></div> <div class="related-content-video__button-container"><a class="button" target="" href="https://www.infoworld.com/videos/">See all videos</a></div></div></section> <section class="popular-topics-selector"> <div class="container"><h2 class="popular-topics-selector__title" id="explore-a-topic">Explore a topic </h2><p class="popular-topics-selector__text"></p><ul class="popular-topics-selector__topics-container"><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/analytics/">Analytics </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/artificial-intelligence/">Artificial Intelligence </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/careers/">Careers </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/cloud-computing/">Cloud Computing </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/data-management/">Data Management </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/database/">Databases </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/development-tools/">Development Tools </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/devops/">Devops </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/emerging-technology/">Emerging Technology </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/generative-ai/">Generative AI </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/java/">Java </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/javascript/">JavaScript </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/microsoft-net/">Microsoft .NET </a></li><li class="popular-topics-selector__topic"> <a class="chip chip--topic" target="_self" href="https://www.infoworld.com/open-source/">Open Source </a></li><li class="popular-topics-selector__topic"><button class="button" type="button" data-modal-trigger="popular-topics-selector-modal">View all topics</button></li> </ul><div class="modal" data-modal="popular-topics-selector-modal" role="dialog"> <div class="modal__backdrop" data-modal-backdrop></div> <div class="modal__content"><div class="popular-topics-selector__modal-content"> <header class="popular-topics-selector__modal-header"> <h1 class="popular-topics-selector__modal-title" id="all-topics">All topics</h1> <div class="popular-topics-selector__modal-close-button"> <button class="button button--quaternary" type="button" data-modal-close="popular-topics-selector-modal"> <span>Close</span> <span class="icon"></span> </button> </div> </header><ul class="popular-topics-selector__modal-list"><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/analytics/" class="popular-topics-selector__modal-list-item-link"> Analytics </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/artificial-intelligence/" class="popular-topics-selector__modal-list-item-link"> Artificial Intelligence </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/careers/" class="popular-topics-selector__modal-list-item-link"> Careers </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/cloud-computing/" class="popular-topics-selector__modal-list-item-link"> Cloud Computing </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/data-management/" class="popular-topics-selector__modal-list-item-link"> Data Management </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/database/" class="popular-topics-selector__modal-list-item-link"> Databases </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/development-tools/" class="popular-topics-selector__modal-list-item-link"> Development Tools </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/devops/" class="popular-topics-selector__modal-list-item-link"> Devops </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/emerging-technology/" class="popular-topics-selector__modal-list-item-link"> Emerging Technology </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/generative-ai/" class="popular-topics-selector__modal-list-item-link"> Generative AI </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/java/" class="popular-topics-selector__modal-list-item-link"> Java </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/javascript/" class="popular-topics-selector__modal-list-item-link"> JavaScript </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/microsoft-net/" class="popular-topics-selector__modal-list-item-link"> Microsoft .NET </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/open-source/" class="popular-topics-selector__modal-list-item-link"> Open Source </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/python/" class="popular-topics-selector__modal-list-item-link"> Python </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/security/" class="popular-topics-selector__modal-list-item-link"> Security </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/software-development/" class="popular-topics-selector__modal-list-item-link"> Software Development </a></li><li class="popular-topics-selector__modal-list-item"> <a href="https://www.infoworld.com/technology-business/" class="popular-topics-selector__modal-list-item-link"> Technology Industry </a></li></ul></div></div> </div> </div> </section> <section class="suggested-content-various"><div class="container"><div class="grid suggested-content-various__content"><div class="col-12 col-3@lg"> <h4 class="suggested-content-various__title" id="show-me-more">Show me more</h4><div class="suggested-content-various__filters"><span class="suggested-content-various__filter"><button class="chip chip--filter chip--active" type="button" data-filter-key="latest">Latest</button></span><span class="suggested-content-various__filter"><button class="chip chip--filter" type="button" data-filter-key="article">Articles</button></span><span class="suggested-content-various__filter"><button class="chip chip--filter" type="button" data-filter-key="video">Videos</button></span></div> </div><div class="col-12 col-9@lg suggested-content-various__items-wrap"><div class="grid grid--cols-9@lg suggested-content-various__items"><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" latest,article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/3614098/uno-platform-unveils-visual-designer-for-cross-platform-net-development.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">news</span> </div> <h4 class="card__title" id="uno-platform-unveils-visual-designer-for-cross-platform-net-development">Uno Platform unveils visual designer for cross-platform .NET development</h4> <div class="card__info"><span>By Paul Krill</span></div><div class="card__info card__info--light"> <span>Nov 27, 2024</span><span>2 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Web Development</span></span><span class="card__tag"><span class="tag">Microsoft .NET</span></span><span class="card__tag"><span class="tag">Development Libraries and Frameworks</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3614098-0-01521100-1732748787-shutterstock_2307918973.jpg?quality=50&strip=all&w=333" alt="Image" loading="lazy" width="400px"></div> </a> </div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/3612254/aws-reinvent-2024-the-future-of-cloud-computing-and-where-aws-fits-in-it.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">news</span> </div> <h4 class="card__title" id="aws-reinvent-2024-step-into-the-future-of-cloud-computing">AWS re:Invent 2024: Step into the future of cloud computing</h4> <div class="card__info"><span>By InfoWorld Staff and dan_muse</span></div><div class="card__info card__info--light"> <span>Nov 27, 2024</span><span>4 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Amazon Web Services</span></span><span class="card__tag"><span class="tag">Cloud Computing</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3612254-0-50114500-1732724758-shutterstock_1584762817.jpg?quality=50&strip=all&w=375" alt="Image" loading="lazy" width="400px"></div> </a> </div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/3613143/anthropic-introduces-the-model-context-protocol.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">news</span> </div> <h4 class="card__title" id="anthropic-introduces-the-model-context-protocol">Anthropic introduces the Model Context Protocol</h4> <div class="card__info"><span>By Lynn Greiner</span></div><div class="card__info card__info--light"> <span>Nov 26, 2024</span><span>3 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Generative AI</span></span><span class="card__tag"><span class="tag">Development Tools</span></span><span class="card__tag"><span class="tag">Open Source</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/11/3613143-0-36716700-1732640235-shutterstock_1178406460-100945794-orig.jpg?quality=50&strip=all&w=400" alt="Image" loading="lazy" width="400px"></div> </a> </div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" latest,video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/3550024/how-to-get-better-web-requests-in-python-with-httpx.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">video</span> </div> <h4 class="card__title" id="how-to-get-better-web-requests-in-python-with-httpx">How to get better web requests in Python with httpx</h4> <div class="card__info"><span></span></div><div class="card__info card__info--light"> <span>Oct 07, 2024</span><span>4 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/10/3550024-0-42985400-1728304252-Youtube-Thumbnails_Template-OLD-2.png?w=444" alt="Image" loading="lazy" width="400px"></div> </a> </div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" latest,video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/3545184/how-to-better-integrate-python-c-with-cffi.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">video</span> </div> <h4 class="card__title" id="how-to-better-integrate-python-c-with-cffi">How to better integrate Python/C with CFFI</h4> <div class="card__info"><span></span></div><div class="card__info card__info--light"> <span>Oct 03, 2024</span><span>5 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/10/3545184-0-41210000-1727984576-Youtube-Thumbnails_Template-OLD-1.png?w=444" alt="Image" loading="lazy" width="400px"></div> </a> </div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value=" video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/3543373/how-to-create-and-work-with-zip-archives-using-python.html" aria-label="Go to content"><div class="card card--xxs"> <div class="card__header"> <span class="card__content-type">video</span> </div> <h4 class="card__title" id="how-to-create-and-work-with-zip-archives-using-python">How to create and work with zip archives using Python</h4> <div class="card__info"><span></span></div><div class="card__info card__info--light"> <span>Oct 01, 2024</span><span>5 mins</span></div> <div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div> <div class="image"><img decoding="async" src="https://www.infoworld.com/wp-content/uploads/2024/10/3543373-0-24502000-1727791824-Youtube-Thumbnails_Template-OLD.png?w=444" alt="Image" loading="lazy" width="400px"></div> </a> </div></div></div></div></div></section></div> </div><!-- .entry-content --> </article><!-- #post-100007618 --> </main><!-- #main --> <div class="container mt-5 sponsored-container"> <div class="col-12 text"> <div class="sponsored-links"> <div class="sponsored_innr_wrap"> <p class="sponsored-links__title" >Sponsored Links</p> <ul class="sponsored-links__list"> <li> <a class="sponsored-links__link" href="http://pubads.g.doubleclick.net/gampad/clk?id=6850412568&iu=/8456/IDG.G_B2B_InfoWorld.com">Accelerate impactful results with Elastic on Microsoft Azure. Seamlessly access Elastic Search, Observability, and Security within the Azure portal to quickly derive and act on data insights.</a> </li> </ul> </div> </div> </div> </div> <footer class="footer"> <div class="container footer__container"> <div class="grid footer__content"> <div class="col-12 col-9@lg grid grid--cols-9@lg footer__main"> <div class="col-12 col-6@md col-3@lg footer__menu"> <details class="accordion" data-accordion-enabled="mobile" data-accordion-expanded="desktop"> <summary data-accordion-summary class="accordion__summary"> <div class="accordion__title"> <div class="footer__menu-title">About</div> </div> <div class="accordion__icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" > <use xlink:href="#icon-circle-chevron-down"></use> </svg> </div> </summary> <div class="accordion__content" data-accordion-content> <nav data-content aria-label="About navigation menu"> <ul class="footer__menu-items"> <li class="footer__menu-item"> <a href="https://www.infoworld.com/about-us/" class="footer__menu-link">About us</a> </li> <li class="footer__menu-item"> <a href="https://foundryco.com/our-brands/infoworld/" class="footer__menu-link">Advertise</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/contact-us/" class="footer__menu-link">Contact Us</a> </li> <li class="footer__menu-item"> <a href="https://foundryco.com/work-here/" class="footer__menu-link">Foundry Careers</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/contact-us/#republication-permissions" class="footer__menu-link">Reprints</a> </li> <li class="footer__menu-item"> <a href="/newsletters/signup/" class="footer__menu-link">Newsletters</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/brandposts/" class="footer__menu-link">BrandPosts</a> </li> </ul> </nav> </div> </details> </div> <div class="col-12 col-6@md col-3@lg footer__menu"> <details class="accordion" data-accordion-enabled="mobile" data-accordion-expanded="desktop"> <summary data-accordion-summary class="accordion__summary"> <div class="accordion__title"> <div class="footer__menu-title">Policies</div> </div> <div class="accordion__icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" > <use xlink:href="#icon-circle-chevron-down"></use> </svg> </div> </summary> <div class="accordion__content" data-accordion-content> <nav data-content aria-label="Policies navigation menu"> <ul class="footer__menu-items"> <li class="footer__menu-item"> <a href="https://foundryco.com/terms-of-service-agreement/" class="footer__menu-link">Terms of Service</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/privacy-policy/" class="footer__menu-link">Privacy Policy</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/cookie-policy/" class="footer__menu-link">Cookie Policy</a> </li> <li class="footer__menu-item"> <a href="https://foundryco.com/copyright-notice/" class="footer__menu-link">Copyright Notice</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/member-preferences/" class="footer__menu-link">Member Preferences</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/about-adchoices/" class="footer__menu-link">About AdChoices</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/e-commerce-affiliate-relationships/" class="footer__menu-link">E-commerce Affiliate Relationships</a> </li> <li class="footer__menu-item"> <a href="https://www.infoworld.com/your-california-privacy-rights/" class="footer__menu-link">Your California Privacy Rights</a> </li> <li class="footer__menu-item"> <a class="ccpa-btn eea-consent-ui footer__menu-link">Privacy Settings</a> </li> </ul> </nav> </div> </details> </div> <div class="col-12 col-6@md col-3@lg footer__menu"> <details class="accordion" data-accordion-enabled="mobile" data-accordion-expanded="desktop"> <summary data-accordion-summary class="accordion__summary"> <div class="accordion__title"> <div class="footer__menu-title">Our Network</div> </div> <div class="accordion__icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" > <use xlink:href="#icon-circle-chevron-down"></use> </svg> </div> </summary> <div class="accordion__content" data-accordion-content> <nav data-content aria-label="Our Network navigation menu"> <ul class="footer__menu-items"> <li class="footer__menu-item"> <a href="https://www.cio.com/" target="_blank" class="footer__menu-link">CIO</a> </li> <li class="footer__menu-item"> <a href="https://www.computerworld.com/" target="_blank" class="footer__menu-link">Computerworld</a> </li> <li class="footer__menu-item"> <a href="https://www.csoonline.com/" target="_blank" class="footer__menu-link">CSO</a> </li> <li class="footer__menu-item"> <a href="https://www.networkworld.com/" target="_blank" class="footer__menu-link">Network World</a> </li> </ul> </nav> </div> </details> </div> <div class="col-12 col-9@lg footer__logo-container"> <a href="https://foundryco.com/" target="_blank" rel="noreferrer" aria-label="Go to Foundry website"> <svg id="a" width="156" height="57" version="1.1" viewBox="0 0 156 57" xmlns="http://www.w3.org/2000/svg"><defs><style>.b{fill:#fff;}</style></defs><g transform="matrix(.67576 0 0 .67576 .37936 .26588)"><path class="b" d="m35.79 77.23c0-1.83 1.94-2.45 3.97-2.45h1.14v-0.57c0-1.26-0.48-1.79-1.7-1.79-1.09 0-1.7 0.46-1.82 1.42h-1.26c0.17-1.8 1.6-2.47 3.13-2.47s2.89 0.62 2.89 2.83v5.22h-1.26v-1c-0.59 0.74-1.3 1.13-2.47 1.13-1.47 0-2.63-0.71-2.63-2.33zm5.1-0.58v-0.98h-1.09c-1.59 0-2.75 0.39-2.75 1.56 0 0.82 0.39 1.33 1.5 1.33 1.33 0 2.35-0.68 2.35-1.91z"/><path class="b" d="m44.65 71.5h1.26v1.26c0.36-0.74 1.24-1.39 2.54-1.39 1.63 0 2.79 0.89 2.79 3.19v4.86h-1.26v-4.95c0-1.39-0.59-2.01-1.86-2.01-1.17 0-2.21 0.74-2.21 2.17v4.8h-1.26v-7.92z"/><path class="b" d="m58.32 68.6h1.32v10.82h-1.32z"/><path class="b" d="m62.47 68.6h2.86c3.72 0 5.48 2.3 5.48 5.31v0.14c0 3-1.73 5.37-5.51 5.37h-2.83zm2.8 9.75c2.79 0 4.18-1.66 4.18-4.31v-0.12c0-2.5-1.21-4.25-4.19-4.25h-1.47v8.69h1.48z"/><path class="b" d="m72.5 74.08v-0.12c0-3.16 2.13-5.53 5.24-5.53 2.15 0 4.07 1 4.4 3.44h-1.32c-0.3-1.72-1.48-2.39-3.06-2.39-2.48 0-3.91 1.82-3.91 4.46v0.12c0 2.68 1.33 4.44 3.88 4.44 2.35 0 3.36-1.53 3.41-3.45h-3.16v-1.09h4.45v0.8c0 3.13-1.92 4.8-4.69 4.8-3.33 0-5.24-2.32-5.24-5.48z"/><path class="b" d="m83.75 80.19c0.65-0.09 0.94-0.35 0.94-0.82-0.58 0-0.97-0.32-0.97-0.91 0-0.51 0.44-0.91 0.94-0.91 0.58 0 1 0.41 1 1.11v0.29c0 1.33-0.85 1.91-1.91 1.97z"/><path class="b" d="m91.33 68.6h1.32v10.82h-1.32z"/><path class="b" d="m95.39 71.5h1.26v1.26c0.36-0.74 1.24-1.39 2.54-1.39 1.63 0 2.79 0.89 2.79 3.19v4.86h-1.26v-4.95c0-1.39-0.59-2.01-1.86-2.01-1.17 0-2.21 0.74-2.21 2.17v4.8h-1.26v-7.92z"/><path class="b" d="m103.88 75.55v-0.12c0-2.42 1.73-4.06 3.84-4.06 1.65 0 3.19 0.76 3.44 2.77h-1.24c-0.2-1.26-1.1-1.73-2.19-1.73-1.44 0-2.54 1.15-2.54 3.01v0.12c0 1.94 1.06 2.97 2.59 2.97 1.12 0 2.13-0.65 2.27-1.94h1.17c-0.17 1.71-1.54 2.98-3.45 2.98-2.21 0-3.88-1.56-3.88-4.01z"/><path class="b" d="m112.87 78.53c0-0.54 0.44-0.97 0.97-0.97s0.97 0.42 0.97 0.97-0.44 0.97-0.97 0.97-0.97-0.42-0.97-0.97z"/><path class="b" d="m119.75 75.55v-0.12c0-2.42 1.73-4.06 3.84-4.06 1.65 0 3.19 0.76 3.44 2.77h-1.24c-0.2-1.26-1.1-1.73-2.19-1.73-1.44 0-2.54 1.15-2.54 3.01v0.12c0 1.94 1.06 2.97 2.59 2.97 1.12 0 2.13-0.65 2.27-1.94h1.17c-0.17 1.71-1.54 2.98-3.45 2.98-2.21 0-3.88-1.56-3.88-4.01z"/><path class="b" d="m128.41 75.53v-0.12c0-2.38 1.65-4.04 3.89-4.04s3.89 1.65 3.89 4.03v0.12c0 2.39-1.65 4.04-3.91 4.04s-3.88-1.71-3.88-4.03zm6.48 0v-0.11c0-1.83-1.01-3.01-2.59-3.01s-2.59 1.18-2.59 3v0.12c0 1.8 0.98 2.98 2.59 2.98s2.59-1.2 2.59-2.98z"/><path class="b" d="m138.17 71.5h1.26v1.21c0.36-0.74 1.23-1.35 2.36-1.35 1.01 0 1.91 0.42 2.32 1.48 0.54-1.03 1.73-1.48 2.71-1.48 1.42 0 2.66 0.85 2.66 3.15v4.9h-1.26v-5c0-1.39-0.59-1.97-1.68-1.97-1.03 0-2.09 0.7-2.09 2.12v4.84h-1.26v-5c0-1.39-0.59-1.97-1.68-1.97-1.03 0-2.09 0.7-2.09 2.12v4.84h-1.26v-7.92z"/><path class="b" d="m151.98 71.5h1.26v1.33c0.45-0.77 1.53-1.47 2.68-1.47 2.07 0 3.6 1.51 3.6 3.98v0.12c0 2.42-1.42 4.09-3.6 4.09-1.3 0-2.23-0.65-2.68-1.44v4.06h-1.26zm6.24 4.03v-0.12c0-2-1.1-3-2.44-3-1.47 0-2.59 0.97-2.59 3v0.12c0 2.03 1.06 2.98 2.6 2.98s2.42-1.06 2.42-2.98z"/><path class="b" d="m160.85 77.23c0-1.83 1.94-2.45 3.97-2.45h1.14v-0.57c0-1.26-0.48-1.79-1.7-1.79-1.09 0-1.7 0.46-1.82 1.42h-1.26c0.17-1.8 1.6-2.47 3.13-2.47s2.89 0.62 2.89 2.83v5.22h-1.26v-1c-0.59 0.74-1.3 1.13-2.47 1.13-1.47 0-2.63-0.71-2.63-2.33zm5.1-0.58v-0.98h-1.09c-1.59 0-2.75 0.39-2.75 1.56 0 0.82 0.39 1.33 1.5 1.33 1.33 0 2.35-0.68 2.35-1.91z"/><path class="b" d="m169.71 71.5h1.26v1.26c0.36-0.74 1.24-1.39 2.54-1.39 1.63 0 2.79 0.89 2.79 3.19v4.86h-1.26v-4.95c0-1.39-0.59-2.01-1.86-2.01-1.17 0-2.21 0.74-2.21 2.17v4.8h-1.26v-7.92z"/><path class="b" d="m180.77 78.6-3.1-7.1h1.35l2.42 5.68 2.19-5.68h1.29l-4.37 10.67h-1.27l1.5-3.57z"/><path class="b" d="m113.87 0.82c4.27 0 6.75 2.78 6.75 6.75s-2.47 6.75-6.8 6.75-6.75-2.83-6.75-6.75 2.47-6.75 6.8-6.75"/><path class="b" d="m95.74 39.61c0 2.78-0.26 5.2-1.13 7.21-2.32 5.3-7.16 8.09-13.75 8.09s-11.69-2.78-14.01-8.09c-0.88-2.01-1.13-4.43-1.13-7.21v-21.48h9.27v20.96c0 1.65 0.1 2.99 0.57 4.07 0.98 2.27 3.09 3.09 5.31 3.09 1.96 0 4.07-0.82 5.05-3.09 0.46-1.08 0.57-2.42 0.57-4.07v-20.96h9.27v21.48z"/><path class="b" d="m129.16 32.6v21.58h-9.27v-20.91c0-1.65-0.1-2.99-0.57-4.07-0.98-2.27-3.09-3.3-5.46-3.3s-4.48 1.03-5.46 3.3c-0.46 1.08-0.57 2.42-0.57 4.07v20.91h-9.27v-21.58c0-2.78 0.26-5.2 1.13-7.21 2.32-5.3 7.16-8.14 14.16-8.14s11.85 2.83 14.16 8.14c0.88 2.01 1.13 4.43 1.13 7.21"/><polygon class="b" points="193.6 18.13 203.79 18.13 211.37 32.19 218.99 18.13 228.83 18.13 215.9 41.51 215.9 54.18 206.42 54.18 206.42 41.51"/><polygon class="b" points="10.44 33.63 10.44 26.53 26.98 26.53 26.98 18.13 1.17 18.13 1.17 54.18 10.44 54.18 10.44 41.98 25.85 41.98 25.85 33.63"/><path class="b" d="m113.87 0.82c4.27 0 6.75 2.78 6.75 6.75s-2.47 6.75-6.8 6.75-6.75-2.83-6.75-6.75 2.47-6.75 6.8-6.75"/><path class="b" d="m95.74 39.61c0 2.78-0.26 5.2-1.13 7.21-2.32 5.3-7.16 8.09-13.75 8.09s-11.69-2.78-14.01-8.09c-0.88-2.01-1.13-4.43-1.13-7.21v-21.48h9.27v20.96c0 1.65 0.1 2.99 0.57 4.07 0.98 2.27 3.09 3.09 5.31 3.09 1.96 0 4.07-0.82 5.05-3.09 0.46-1.08 0.57-2.42 0.57-4.07v-20.96h9.27v21.48z"/><path class="b" d="m129.16 32.6v21.58h-9.27v-20.91c0-1.65-0.1-2.99-0.57-4.07-0.98-2.27-3.09-3.3-5.46-3.3s-4.48 1.03-5.46 3.3c-0.46 1.08-0.57 2.42-0.57 4.07v20.91h-9.27v-21.58c0-2.78 0.26-5.2 1.13-7.21 2.32-5.3 7.16-8.14 14.16-8.14s11.85 2.83 14.16 8.14c0.88 2.01 1.13 4.43 1.13 7.21"/><path class="b" d="m181.65 42.8h-5.82v11.38h-9.27v-36.05h17.2c6.9 0 12.05 4.58 12.05 12.26 0 4.74-1.96 8.34-5.36 10.51l5.56 13.29h-9.89l-4.48-11.38zm-5.82-16.69v8.6h5.82c3.45 0 4.94-1.65 4.94-4.33 0-2.52-1.49-4.28-4.94-4.28h-5.82zm5.82 16.69h-5.82v11.38h-9.27v-36.05h17.2c6.9 0 12.05 4.58 12.05 12.26 0 4.74-1.96 8.34-5.36 10.51l5.56 13.29h-9.89l-4.48-11.38zm-5.82-16.69v8.6h5.82c3.45 0 4.94-1.65 4.94-4.33 0-2.52-1.49-4.28-4.94-4.28h-5.82z"/><path class="b" d="m132.31 54.18v-36.05h13.34c11.69 0 18.54 7.11 18.54 18.03s-6.13 18.03-17.98 18.03h-13.91zm9.27-8.14h3.86c6.03 0 9.27-3.3 9.27-9.89s-3.25-9.89-9.27-9.89h-3.86zm-9.27 8.14v-36.05h13.34c11.69 0 18.54 7.11 18.54 18.03s-6.13 18.03-17.98 18.03h-13.91zm9.27-8.14h3.86c6.03 0 9.27-3.3 9.27-9.89s-3.25-9.89-9.27-9.89h-3.86z"/><path class="b" d="m45.93 17.41c10.87 0 17.31 7.98 17.31 18.75s-6.7 18.75-17.31 18.75-17.36-7.93-17.36-18.75 6.75-18.75 17.36-18.75m-0.05 29.05c4.89 0 7.98-4.07 7.98-10.04 0-6.59-3.09-10.56-7.73-10.56-5.05 0-8.14 3.97-8.14 10.04 0 6.49 3.09 10.56 7.88 10.56m0.05-29.05c10.87 0 17.31 7.98 17.31 18.75s-6.7 18.75-17.31 18.75-17.36-7.93-17.36-18.75 6.75-18.75 17.36-18.75m-0.05 29.05c4.89 0 7.98-4.07 7.98-10.04 0-6.59-3.09-10.56-7.73-10.56-5.05 0-8.14 3.97-8.14 10.04 0 6.49 3.09 10.56 7.88 10.56"/><polygon class="b" points="10.44 33.63 10.44 26.53 26.98 26.53 26.98 18.13 1.17 18.13 1.17 54.18 10.44 54.18 10.44 41.98 25.85 41.98 25.85 33.63"/></g></svg> </a> </div> </div> <div class="col-12 col-3@lg footer__social"> <ul class="footer__social-items"> <li class="footer__social-item"> <a class="footer__social-link" href="https://www.linkedin.com/company/164364" target="_blank" rel="noreferrer" aria-label="LinkedIn"> <span class="footer__social-link-text">LinkedIn</span> <span class="footer__social-link-icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-linked-in"></use> </svg> </span> </a> </li> <li class="footer__social-item"> <a class="footer__social-link" href="https://twitter.com/infoworld" target="_blank" rel="noreferrer" aria-label="X"> <span class="footer__social-link-text">X</span> <span class="footer__social-link-icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-twitter"></use> </svg> </span> </a> </li> <li class="footer__social-item"> <a class="footer__social-link" href="https://www.facebook.com/InfoWorld" target="_blank" rel="noreferrer" aria-label="Facebook"> <span class="footer__social-link-text">Facebook</span> <span class="footer__social-link-icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-facebook"></use> </svg> </span> </a> </li> <li class="footer__social-item"> <a class="footer__social-link" href="https://www.youtube.com/@InfoWorld" target="_blank" rel="noreferrer" aria-label="Youtube"> <span class="footer__social-link-text">Youtube</span> <span class="footer__social-link-icon"> <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> <use xlink:href="#icon-youtube"></use> </svg> </span> </a> </li> </ul> </div> </div> <div class="footer__copyright"> <div class="entry-copyright"> <a href="https://foundryco.com/terms-of-service-agreement/">Copyright 漏 2024 IDG Communications, Inc.</a></div> </div> </div> </footer> </div><!-- #page--> <!-- Start Subscriber Embed Code --> <script type="text/javascript"> var subscribersSiteId = "d73925e9-37f6-478a-9804-7901f9e3a2ae"; var subscribersServiceWorkerPath = '/?firebase-messaging-sw'; </script> <script type="text/javascript" src="https://cdn.subscribers.com/assets/subscribers.js"></script> <!-- End Subscriber Embed Code --> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5JGZ3LH" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <link rel='stylesheet' id='typekit-styles-css' href='https://use.typekit.net/uow1hrg.css?ver=1.0.0' media='all' /> <link rel='stylesheet' id='robotofont-css' href='https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/fonts/roboto.css?ver=1.0.0' media='1' /> <script id="child_ajaxload_posts-js-extra"> var ajaxload_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"6719cddb69"}; </script> <script id="frontend-scripts-js-extra"> var siteData = {"site":"infoworld.com","connectedhub":"b2b"}; var googleSearch = {"search_engine_id":"011881588825642368632:wfa05lybzqg","search_title":"Search","search_slug":"search"}; </script> <script id="ajaxload_posts-js-extra"> var ajaxload_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"5077aa89fa"}; </script> <script id="ajaxload_events-js-extra"> var ajaxload_event_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"a0fea83a2b"}; </script> <script type="text/javascript" src="https://www.infoworld.com/_static/??-eJyl0NEKwjAMBdAfMhaVMX0Qv6Vt6tbZtaHJnP69dQ9DwSHoUyBwTy5RI4FNUVwUZYMvA/oBKAyNj6w8NiCtzwiks9wVehbFNnsSVuc85RBM1hEpsYAJyV7WHa/UCyut612xRjBbA7b1AWHavXO607eQNEKjxZWDxeMlqtR6Wkaz+0SZIWJwP4bnHv80mBF3LalF5dtLiEry1B839W5bHeq62ncPoUyf+A==" ></script> </body> </html>