Kotlin Census 2019 : nous comptons sur votre participation

Nous lançons une nouvelle enquête Kotlin Census ! Fin 2019, plus de 4 millions de personnes avaient utilisé Kotlin. Cela représente un nombre significatif, qui correspond à une grande variété de cas d’utilisation. Nous tenons à ce que chaque utilisateur de Kotlin bénéficie de la meilleure expérience possible. Nous souhaitons continuer à l’améliorer pour permettre à tous les membres de la communauté de donner vie à leurs idées grâce à Kotlin. C’est pourquoi vos retours sont si importants pour nous.

Merci de répondre au questionnaire Census pour faire part à l’équipe Kotlin des différents usages que vous avez fait du langage au cours de l’année dernière, de ce qui vous a plus et des difficultés que vous avez pu rencontrer.

Nous invitons également les personnes qui n’utilisent pas Kotlin à y répondre. Dites-nous en plus sur les raisons pour lesquelles vous ne l’utilisez pas. Vos retours nous intéressent tout autant et seront vraiment les bienvenus.

Si vous avez répondu au questionnaire l’an dernier, nous vous en remercions ! Nous vous serions reconnaissants d’y participer de nouveau cette année pour nous permettre de suivre l’évolution de votre expérience. Nous avons ajouté des questions sur les fonctionnalités et produits qui ont été lancés en 2019. Nous souhaiterions aussi en savoir plus sur votre expérience avec Kotlin et son écosystème en 2019.

Participez au Census

Un dernier point important – en participant au Census, vous tentez votre chance pour gagner une place pour la prochaine KotlinConf ou un t-shirt Kotlin.

Votre avis compte pour nous !

Auteur de l’article original en anglais : Alina Dolgikh

Posted in Uncategorized | Tagged | Leave a comment

Notre plan de 2020 et la feuille de route pour Clion 2020.1

Avant de vous de vous en dire plus sur ce qui vous attend avec CLion en 2020, nous souhaitons remercier très sincèrement les utilisateurs de notre programme d’accès anticipé EAP ! Sans vous, nous ne serions pas en mesure de détecter autant de problèmes gênants affectant la grande diversité des environnements C++, et de rendre CLion aussi performant que possible !

Remerciements particuliers

Nous souhaitons faire bénéficier nos évaluateurs EAP les plus actifs d’un abonnement complet d’un an à CLion, qu’ils peuvent utiliser pour acheter un nouvel abonnement ou pour prolonger leur abonnement actuel. Ces contributeurs sont :

  • Roman Popov
  • Maxim Yanchenko
  • Miha Rozina
  • Roland Illig

Feuille de route : CLion en 2020

Commençons par nos principales priorités pour 2020. En fait, elles ne changent pas tellement par rapport à celles de 2019. Nous allons rester concentrés sur :

  1. Les performances et la réactivité : continuer à éliminer les blocages de l’interface utilisateur et à travailler sur des modifications architecturales d’envergure pour apporter des améliorations globales aux performances de CLion.
  2. Clangd : améliorer la stabilité du moteur et éliminer les blocages, déplacer autant de fonctions de l’EDI que possible vers Clangd et ajouter de nouvelles fonctionnalités de langage en plus du moteur de langage basé sur Clangd.
  3. Modèle de projet : avancer sur la prise en charge native de Makefiles, envisager d’autres systèmes de build tels que Bazel et poser les bases d’une API de modèle de projet dans CLion.
  4. Embarqué : poursuivre nos efforts concernant le développement embarqué et travailler sur davantage de fonctionnalités essentielles dans ce domaine.

À l’horizon 2020.1

Voici les principales tâches que nous avons définies pour la prochaine version, CLion 2020.1, qui devrait sortir vers la fin mars.

À noter : il s’agit d’un projet préliminaire. Nous ne pouvons pas garantir que toutes les fonctionnalités mentionnées ci-dessous seront incluses dans CLion 2020.1.
  • Moteur basé sur Clangd :
    • Améliorer la stabilité du moteur, éliminer les blocages, examiner l’utilisation de la mémoire.
    • Corriger les problèmes de saisie automatique du code de Clangd.
    • Utiliser automatiquement le fichier de configuration .clang-tidy dans le répertoire du projet, le cas échéant.
    • Déplacer l’analyse du flux de données vers Clangd pour améliorer la performance.
  • Prise en charge de C++ :
    • Prise en charge initiale de CUDA.
    • Améliorer la saisie dans les macros multilignes et améliorer d’autres aspects de la performances et de la réactivité.
    • Introduire des valeurs par défaut pour la refactorisation Change signature.
  • Modèles de projets :
    • Prise en charge native de Makefiles.
    • Finaliser l’intégration de l’API CMake File (notamment la recompilation d’un seul fichier).
  • Débogueur :
    • Débogage des Core dumps (CPP-7977).
    • Redirection des informations entrantes (CPP-3153).
  • Développement de technologies embarquées :
    • Prise en charge des chaînes d’outils IAR et armcc (CPP-14192).
  • Divers correctifs et Améliorations :
    • Corriger les bugs et blocages liés aux chaînes d’outils distantes.
    • Ajouter automatiquement les indicateurs de compilation requis pour les sanitizers/la couverture.

Voilà ce qui va occuper nos journées. Si vous souhaitez demander de nouvelles fonctionnalités en particulier, veuillez nous l’indiquer via notre outil de suivi. Nous sommes à l’écoute !

L’Équipe CLion

JetBrains
The Drive to Develop

Auteur de l’article original en anglais : Anastasia Kazakova

Posted in News | Tagged | Leave a comment

JetBrains Mono : une nouvelle police de caractères conçue pour les développeurs

Il y a un an, nous nous sommes fixées l’objectif de créer une police qui rende le travail avec le code plus confortable. C’est chose faite !

JetBrainsMonoTypeface

Vous vous demandez quel est le problème avec les autres polices à espacement fixe ?

En tant que développeurs, nous passons une grande partie de notre journée à examiner du code. Il est donc essentiel pour nous de disposer d’un type de police qui rende la lecture du code plus facile et agréable. Pourtant, la logique de la plupart des polices ne tient pas compte de la différence entre la lecture de code et la lecture d’un livre. Lorsque nous lisons du code, nos yeux opèrent un mouvement particulier car ils doivent se déplacer aussi bien verticalement qu’horizontalement, alors que pour la lecture d’un livre les yeux parcourent le texte toujours dans la même direction.

C’est pourquoi lors de la conception de JetBrains Mono, nous avons pris en compte les différents éléments pouvant provoquer une fatigue oculaire lors de longues sessions de travail avec du code. Nous avons notamment pris en considération des éléments tels que la taille et la forme des lettres, l’espacement – un équilibre naturellement conçu dans les polices monospace, les détails inutiles et distinctions floues entre les symboles (par exemple entre I pour i majuscule et I pour le chiffre 1) ; et nous avons programmé des ligatures lors du développement de notre police.

Et aujourd’hui nous avons le plaisir de vous présenter JetBrains Mono – une nouvelle police de caractères open source spécialement conçue pour les développeurs. Nous vous invitons à découvrir ce qui rend JetBrains Mono unique par rapport aux autres polices à espacement fixe et à la télécharger pour la tester dans votre éditeur de code. Essayez JetBrains Mono et vous verrez, vos yeux vous en seront reconnaissants.

Bon codage !

Auteur de l’article original en anglais : Konstantin Bulenkov

Posted in News, Release Announcements | Tagged , | Leave a comment

Ce qui vous attend dans Kotlin 1.4 et ses versions ultérieures

Lors de sa keynote à la KotlinConf, Andrey Breslav a présenté notre vision stratégique concernant les principaux axes pour l’évolution de Kotlin, et nos projets pour Kotlin 1.4, qui sera publiée courant 2020.

Regardez toute la keynote ci-dessous :

Notre ambition est de faire de Kotlin un partenaire fiable pour tous vos projets et qu’il devienne votre langage de prédilection. Pour ce faire, nous allons le faire briller sur toutes les plateformes. Plusieurs études de cas d’entreprises reconnues montrent que nous progressons efficacement dans cette direction.

Kotlin 1.4, prévue pour le printemps 2020, permettra à l’écosystème Kotlin de faire un nouveau pas en avant.

L’accent sur la qualité

Avec Kotlin 1.4 nous entendons privilégier avant tout la qualité et les performances. Kotlin est un langage moderne qui est déjà pionnier sur de nombreuses idées et approches. Il va rester moderne et en constante évolution. Cependant, nous pensons qu’actuellement Kotlin a atteint un stade où l’amélioration de l’expérience globale doit primer sur l’ajout de fonctionnalités. C’est pourquoi Kotlin 1.4 n’apportera que quelques petits changements au langage. Ils sont expliqués en détail ci-dessous.

Nous avons déjà réussi à obtenir des résultats impressionnants en améliorant les performances des EDI prenant en charge Kotlin. La saisie automatique du code s’est considérablement accélérée par rapport aux versions précédentes :

En collaboration avec l’équipe Gradle, nous avons accéléré les scripts Gradle. L’importation Gradle en Kotlin 1.3.60 dans Android Studio est environ 2,5 fois plus rapide et demande environ 75% moins de mémoire qu’avec Kotlin 1.3.10 :

Mémoire

De plus, le chargement de build.gradle.kts ne sollicite pratiquement pas le processeur ! De plus, la compilation de Kotlin/Native en mode dev devient jusqu’à 2 fois plus rapide grâce à la mise en cache du code.

Nous comprenons que la vitesse de build est souvent la plus grande préoccupation de nos utilisateurs, et nous améliorons constamment notre chaîne d’outils pour y répondre. Mais des améliorations incrémentielles ne parviennent pas à suivre le rythme de la croissance naturelle des bases de code de production : tandis que nous accélérons la compilation, les utilisateurs écrivent davantage de code, et le temps de build global ne s’améliore pas assez. Il est devenu évident qu’il faudrait réimplémenter le compilateur pour le rendre très rapide.

Nouveau compilateur

La nouvelle implémentation du compilateur doit répondre à trois objectifs : être très rapide, unifier toutes les plateformes prises en charge par Kotlin et fournir une API pour les extensions du compilateur. Il s’agit d’un travail de plusieurs années, mais nous avons commencé il y a un certain temps, donc certaines parties de cette nouvelle implémentation arriveront dès la version 1.4, et la transition sera très progressive. C’est déjà en cours : par exemple, si vous avez essayé le nouvel algorithme pour l’inférence de type, il fait partie du nouveau compilateur. L’approche sera la même pour les autres parties ; c’est-à-dire que les deux versions seront disponibles pendant un certain temps, l’ancienne, et la nouvelle en mode expérimental. Lorsque la nouvelle version sera stable, elle deviendra la version par défaut.

Accélération grâce au nouveau front-end

L’accélération que nous attendons du nouveau compilateur proviendra principalement d’une nouvelle implémentation front-end.

Pour fournir un peu de contexte, la compilation peut être considérée comme un pipeline qui récupère des fichiers source et les transforme progressivement en code exécutable. La première grande étape de ce pipeline est familièrement appelée le front-end du compilateur. C’est la partie qui analyse le code, résout les noms, vérifie les types, etc. Cette partie du compilateur fonctionne également à l’intérieur de l’EDI pour mettre en évidence les erreurs, naviguer vers les définitions et rechercher les utilisations des symboles dans votre projet. Et c’est l’étape qui demande le plus de temps à kotlinc actuellement. Nous voulons donc la rendre beaucoup plus rapide.

L’implémentation actuelle n’est pas encore terminée et elle n’arrivera pas dans la version 1.4. Toutefois, elle effectue déjà la majeure partie du travail le plus fastidieux, et nous pouvons mesurer l’accélération attendue. Nos benchmarks (la compilation de YouTrack et du compilateur Kotlin lui-même) montrent que le nouveau front-end sera environ 4,5 fois plus rapide qu’aujourd’hui.

Extensibilité et back-ends unifiés

Une fois que le front-end a terminé l’analyse du code, un back-end génère les exécutables. Nous avons trois back-ends : Kotlin/JVM, Kotlin/JS et Kotlin/Native. Historiquement, les deux premiers étaient écrits indépendamment et ne partageaient pas beaucoup de code. Lorsque nous avons initié Kotlin/Native, il reposait sur une nouvelle infrastructure construite autour d’une représentation interne (IR) pour le code Kotlin, qui fonctionne de façon quelque peu similaire au bytecode dans les machines virtuelles. Nous migrons maintenant les deux autres back-ends vers le même IR. Par conséquent, nous partagerons une grande partie de la logique des back-ends et disposerons d’un pipeline unifié, qui permettra de mettre en commun la plupart des fonctionnalités, optimisations et corrections de bugs pour toutes les cibles.

Nous migrerons progressivement vers les nouveaux back-ends, et dans la version 1.4, il est peu probable qu’ils soient activés par défaut, mais les utilisateurs pourront choisir de les utiliser explicitement.

Une infrastructure de back-end commune permet d’envisager des extensions de compilateur multiplateformes. On peut se connecter au pipeline pour ajouter des traitements et/ou des transformations personnalisés qui fonctionneront automatiquement pour toutes les cibles. Dans la version 1.4, nous ne fournissons pas d’API publique pour de telles extensions (l’API sera stabilisée plus tard), mais nous travaillons en étroite collaboration avec nos partenaires, notamment JetPack Compose, qui travaillent déjà sur leurs plugins de compilation.

Découvrez KLib : Kotlin Library Format

Pour construire une bibliothèque multiplateforme en Kotlin qui soit véritablement fiable pour les clients, il faut un format de distribution qui fonctionne également sur n’importe quelle plateforme. Nous vous présentons donc KLib : un format de bibliothèque multiplateforme pour Kotlin. Un fichier KLib contient un IR sérialisé. Votre code peut l’ajouter en tant que dépendance et le back-end du compilateur le récupérera et générera du code exécutable pour la plateforme donnée. L’analogie avec le bytecode reste également valable ici : on peut analyser et transformer les KLibs tout comme le bytecode JVM. Toute transformation apportée à l’IR sérialisé affecteront toutes les plateformes pour lesquelles le KLib sera utilisé.

En fait, Kotlin/Native utilise le format des KLibs pour distribuer les bibliothèques natives Kotlin depuis un certain temps, et nous en étendons maintenant le format pour prendre en charge d’autres back-ends et bibliothèques multiplateformes. Le format sera expérimental dans la version 1.4 et nous prévoyons de fournir un ABI stable dans les futures versions.

Plus d’actualités multiplateformes

Exécution de code iOS dans Android Studio

Nous travaillons sur un plugin pour Android Studio qui pourra exécuter, tester et déboguer le code Kotlin sur les appareils iOS et les simulateurs. Le plugin utilise du code propriétaire d’IntelliJ, il sera donc à source fermée. Il n’apportera pas de prise en charge linguistique pour Objective-C ou Swift, et certaines opérations telles que le déploiement sur AppStore pourront nécessiter l’exécution de Xcode, mais tout ce que vous ferez avec le code Kotlin fonctionnera à partir d’Android Studio avec le nouveau plugin installé. Nous prévoyons de proposer un aperçu de ce plugin en 2020.

Améliorations de l’exécution de Kotlin/Native

En plus de Linux, Windows, macOS et iOS, Kotlin/Native fonctionne maintenant sur watchOS et tvOS. Pratiquement tous les appareils peuvent donc exécuter Kotlin. Nous travaillons également sur les performances d’exécution de Kotlin/Native pour accélérer encore les programmes iOS Kotlin.

Bibliothèques principales

Les bibliothèques principales de Kotlin fonctionnent sur toutes les plateformes. Cela inclut kotlin-stdlib qui gère tous les types et collections de base, kotlinx.coroutines, kotlinx.serialization et kotlinx.io. La prise en charge des dates est vraiment nécessaire dans le monde multiplateforme et c’est sur cela que nous travaillons : des durées expérimentales ont déjà été ajoutées à stdlib et la prise en charge de DateTime est en cours.

Autre ajout important aux bibliothèques Kotlin : Flow, une implémentation de Reactive Streams basée sur les coroutines. Flow est excellent pour le traitement des flux de données et il utilise la puissance de Kotlin pour cela. Outre son ergonomie, Flow apporte plus de vitesse. Sur certains benchmarks, il est presque 2 fois plus rapide que les implémentations de Reactive Streams populaires.

Pour les auteurs de bibliothèques

Comme la création de nouvelles bibliothèques est vitale pour l’écosystème Kotlin, nous continuons d’améliorer l’expérience des auteurs de bibliothèques. Le nouveau mode de création des bibliothèques vous aidera à façonner votre code de façon optimale pour obtenir des API stables. De plus, nous allons publier Dokka 1.0 pour prendre en charge la génération de documents pour toutes les plateformes.

Web multiplateforme

Le partage de code entre les plateformes est idéal pour les mobiles, mais également pour les clients Web : beaucoup peuvent être partagés avec le serveur ou avec des applications mobiles. Nous investissons de plus en plus dans les outils Kotlin/JS, et pouvons désormais effectuer des allers-retours de développement très rapides, entre le changement de code Kotlin et la visualisation des résultats dans le navigateur :

Nous avons également amélioré JS interop afin que vous puissiez désormais associer une dépendance NPM à un projet Kotlin et que toutes les définitions de type .d.ts soient récupérées automatiquement par la chaîne d’outils Kotlin.

Le nouveau back-end IR apportera également des améliorations considérables à la taille des binaires. Les fichiers JS compilés peuvent être réduits à la moitié de leur taille actuelle.

Nouvelles fonctionnalités de langage

Kotlin 1.4 apportera quelques nouvelles fonctionnalités linguistiques.

Conversions SAM pour les classes Kotlin

La communauté nous a demandé de prendre en charge les conversions SAM pour les classes Kotlin (KT-7770). La conversion SAM s’applique si vous passez une lambda comme argument lorsqu’une interface ou une classe ne comportant qu’une seule méthode abstraite est attendue comme paramètre. Le compilateur convertit alors automatiquement la lambda en une instance de la classe implémentant la fonction membre abstraite.

Les conversions SAM ne fonctionnent actuellement que pour les interfaces Java et les classes abstraites. L’idée initiale derrière cette conception était d’utiliser explicitement les types de fonction pour de tels cas d’utilisation. Il s’est cependant avéré que les types de fonction et les alias de types ne couvraient pas tous les cas d’utilisation et qu’il fallait donc souvent garder une interface en Java uniquement pour obtenir une conversion SAM.

Contrairement à Java, Kotlin ne permettra pas une conversion SAM pour chaque interface avec une seule méthode abstraite. Nous pensons qu’une intention de rendre une interface applicable à la conversion SAM devrait être explicite. Ainsi, pour définir une interface SAM, vous devrez marquer une interface avec le mot-clé fun, pour souligner qu’elle peut être utilisée en tant qu’interface fonctionnelle :

Notez que le passage d’une lambda au lieu d’une interface fun ne sera pris en charge que dans un nouvel algorithme d’inférence de type.

Mélange d’arguments nommés et positionnels

Kotlin interdit de mélanger des arguments comportant des noms explicites (“nommés”) et des arguments normaux sans noms (“positionnels”), à moins que vous ne placiez tous les arguments nommés après tous les arguments positionnels. Il existe toutefois un cas dans lequel c’est vraiment problématique : lorsque tous les arguments restent dans leur position correcte et que vous souhaitez spécifier un nom pour un argument qui se trouve au milieu. Kotlin 1.4 résoudra ce problème, vous pourrez donc écrire du code comme :

Optimisation des propriétés déléguées

Nous allons améliorer la compilation sous-jacente de la propriété lazy et de quelques autres propriétés déléguées.

En règle générale, une propriété déléguée peut accéder à l’objet de réflexion KProperty correspondant. Par exemple, lorsque vous utilisez Delegates.observable, vous pouvez afficher des informations sur la propriété modifiée :

Pour rendre cela possible, le compilateur Kotlin génère une propriété de membre syntaxique supplémentaire, un tableau stockant tous les objets KProperty qui représente les propriétés déléguées utilisées dans la classe :

Cependant, certaines propriétés déléguées n’utilisent pas du tout KProperty. Pour celles-ci, la génération d’un objet dans $$delegatedProperties n’est pas optimale. La version Kotlin 1.4 optimisera ces cas. Si les opérateurs de propriété délégués sont inlige et que le paramètre KProperty n’est pas utilisé, les objets de réflexion correspondants ne seront pas générés.

L’exemple le plus remarquable est la propriété lazy. L’implémentation de getValue pour la propriété lazy est inline et n’utilise pas le paramètre KProperty :

À partir de Kotlin 1.4, lorsque vous définirez une propriété lazy, l’instance KProperty correspondante ne sera plus générée. Si les seules propriétés déléguées que vous utilisez dans une classe sont des propriétés lazy (et d’autres propriétés conformes à cette optimisation), aucun tableau $$delegatedProperties ne sera généré pour la classe :

Virgules de fin

Cette modification syntaxique mineure s’avère incroyablement pratique ! Vous pouvez placer une virgule de fin supplémentaire après le dernier paramètre d’une liste de paramètres. Vous pouvez ensuite échanger des lignes ou ajouter de nouveaux paramètres sans avoir à ajouter ou supprimer de virgules.

Autres changements notables

Une fonction typeof utile introduite dans Kotlin 1.3.40 va devenir stable et prise en charge sur toutes les plateformes.

La fonctionnalité qui vous permet d’activer break et continue à l’intérieur de when était déjà décrite dans l’article de blog de la version 1.3.60 .

Merci !

Nous remercions tous ceux qui ont essayé les versions EAP de Kotlin et les fonctionnalités expérimentales et nous faire part de leurs retours d’expérience. Nous développons le langage Kotlin avec vous et beaucoup de nos décisions de conception reposent sur vos précieuses contributions. Préserver la rapidité et l’efficacité de cette boucle de rétroaction avec la communauté est vraiment important pour développer et améliorer Kotlin !

Nous sommes vraiment reconnaissants à tous les membres de notre communauté qui créent tant de choses incroyables avec Kotlin. Continuons à Kotliner ensemble !

Au fait, le plugin Kotlin dans IntelliJ IDEA et Android Studio recueille des statistiques anonymisées sur votre utilisation de ses fonctionnalités. Nous vous prions de bien vouloir activer ces statistiques, car elles nous aident à comprendre ce qui fonctionne, ce qui pose problème et sur quelles améliorations nous devons nous concentrer.

Auteur de l’article original en anglais : Svetlana Isakova

Posted in Uncategorized | Tagged , , , | Leave a comment

JetBrains vous souhaite de joyeuses fêtes

Nous vous souhaitons de joyeuses fêtes et vous transmettons nos meilleurs vœux pour l’année à venir.

Quelle belle année cela a été ! Jusqu’à la fin, 2019 a été riche en événements et nouveautés pour nous, et nous espérons qu’il en a été de même pour vous. Nous avons eu plus de 1700 participants à notre événement KotlinConf 2019 début décembre à Copenhague et des milliers de personnes ont suivi la conférence en live stream. Lors de cette conférence, nous avons également annoncé le lancement de notre tout nouveau produit
Space – l’environnent collaboratif intégré pour les équipes. D’ailleurs si vous ne l’avez pas déjà fait, il est encore temps de vous inscrire pour rejoindre le programme d’accès anticipé.

Si vous avez un peu de temps libre en cette fin d’année, c’est l’occasion de découvrir JetBrains Academy et d’essayer les dernières versions mises à jour de nos EDI et outils .NET. Tous les produits compris dans JetBrains Toolbox sont les dernières versions 2019.3, parmi lesquels les EDI bases sur IntelliJ, qui bénéficient d’un démarrage bien plus rapide pour vous permettre d’être encore plus productifs l’année prochaine.

Toute l’équipe Jetbrains souhaite aux membres de la communauté de passer de très bonnes fêtes. Whatever your passion is. Whatever you find meaningful. Whatever brings you happiness. May it be yours this holiday season and throughout the coming year.

Nous avons déjà beaucoup de choses prévues pour 2020, à commencer par le 20ème anniversaire de JetBrains, et notre étude annuelle sur l’Écosystème des Développeurs. Restez connecté, l’année prochaine promet d’être encore pleines d’aventures !

Passez de bonnes fêtes et comme toujours, gardez votre envie de développer et de créer !

JetBrains
The Drive to Develop

Posted in Uncategorized | Leave a comment

De l’art pour votre desktop

Pour beaucoup de développeurs, coder est un art.
JetBrains partage cette idée et notre Artwork Generator, qui résulte de la rencontre entre créativité et science, en atteste.

JetBrains Artwork Generator v3

Depuis sa création en 2017 nous avons développé JetBrains Artwork Generator en continu et nous vous avions présenté ses premières améliorations en 2018.

Nous arrivons à présent à la fin de 2019 et continuons à utiliser le potentiel illimité de la technologie pour le faire évoluer.

Nouveautés

Nous utilisons notre art généré par code pour créer des illustrations originales pour tous nos écrans de démarrage, bannières et graphismes pour les publications des nouvelles versions de nos outils. Chacun de nos produits dispose d’une identité graphique unique.

Cette version d’Artwork Generator crée des graphismes animés et statiques à partir du modèle de calcul des metaballs, qui prédit les interférences de gouttes de fluide (ou sphères élastiques) entre elles dans le vide.

Les écrans de veille et fonds d’écran de JetBrains sont disponibles sur la page Art du desktop de notre site.

Si vous êtes à la recherche de quelque chose d’unique, notre générateur vous permet de produire des graphismes personnalisés : code2art.jetbrains.com.

Voici quelques exemples de ce que vous pouvez créer avec le générateur.

Metarings
Metarings

Myopia and biomorphs
Myopia and biomorphs

Khokhloma
Khokhloma

Chromatic Holes
Chromatic Holes

ARRT !
ARRT!

Vous pouvez utiliser les écrans de veille et les fonds d’écran pour votre bureau, mais aussi comme arrière-plan de votre EDI JetBrains. Consultez ce guide pour des instructions étape par étape

Les détails techniques

Nous avons poursuivi le développement du générateur avec le langage Elm, et l’animation utilise la bibliothèque Elm-WebGL.

L’approche fonctionnelle et le typage strict nous ont permis de reconstruire entièrement la structure du projet en quelques semaines. Les couches sont désormais véritablement modulaires et vous pouvez les activer ou les désactiver pour composer les effets visuels de votre choix. Vous pouvez utiliser n’importe quelle source graphique comme couche : animation de tableaux 2D, WebGL avec des scripts shaders, du simple HTML ou un SVG (également animé), etc. Une couche peut même être écrite en JavaScript et incluse dans le système.

C’est possible grâce à l’Architecture Elm , similaire à celle utilisée pour les composants imbriqués. Chaque couche a son cycle Model/Update/View, est responsable de l’importation et de l’exportation et peut également recevoir des événements globaux, tels que “I feel lucky”. Dans le cas de l’événement “I feel lucky”, la couche elle-même génère une version aléatoire de son modèle.

D’un point de vue technique, Elm est un excellent choix pour générer des graphismes :

  • Il nous aide à décrire le modèle de couches ainsi que toutes les structures complexes en utilisant les types de données algébriques dans leur forme la plus pure, et c’est le moyen le plus simple et le plus naturel de le faire pour nous.
  • Cette façon fonctionnelle de programmer est extrêmement conviviale avec des algorithmes génératifs ; il est facile de les séparer en fonctions indépendantes et de les réutiliser avec n’importe quel type d’entrée.
  • Combinés, les types de données algébriques et les fonctionnalités nous aident à organiser le code de façon modulaire. Il est facile de débrancher ou de brancher ce que l’on souhaite.
  • Le code dans Elm est beaucoup plus lisible (si vous prenez le temps de vous habituer à la nouvelle syntaxe) que le code de la plupart des autres langages – même le code Haskell, duquel il emprunte la plupart de ses idées.
  • Le paquet Elm-WebGL n’est pas qu’un simple wrapper. Il s’agit plutôt d’une API qui propose des moyens utiles et faciles de créer une scène, de vérifier les types de données que vous fournissez aux shaders ou de charger des textures à la manière d’Elm, entre autres nombreuses choses utiles.
  • Les ports JavaScript nous permettent d’inclure gui.js comme GUI actuelle tout en conservant le modèle du côté Elm.

Il y a toutefois quelques inconvénients à écrire en Elm :

  • Il manque au paquet Elm-WebGL certaines fonctionnalités dont nous avons besoin, comme le rendu dynamique de la texture et le passage de tableaux de données dans les shaders, et en Elm il est désormais limité à l’utilisation de code JavaScript natif. Nous avons essayé d’utiliser un remplaçant piloté par JS, sans succès. Nous avons donc quelques couches écrites en JS-WebGL pur, et le modèle fait des allers-retours lors des mises à jour à l’aide des ports JS.
  • Pour l’instant, sans raison apparente, le paquet Elm/url ne prend pas en charge les URL de type file:///-, donc pour permettre aux utilisateurs de télécharger la version sans serveur auto-hébergée de l’illustration générée, nous devons corriger la sortie du JavaScript WebPack à l’aide d’expressions régulières.

Des modifications sont toujours ajoutées à la plateforme en continu. Le code source de l’application, comme toujours, est disponible sur GitHub sous la licence Creative Commons.

Explorer nos Graphismes de bureau

Expérimentez le générateur et n’hésitez pas à partager vos résultats sur les réseaux sociaux et à taguer JetBrainsNous avons hâte de découvrir vos œuvres !

JetBrains
The Drive to Develop

Auteur de l’article original en anglais : Anastasia Chumak

Posted in News | Tagged | Leave a comment

Nouveautés de PyCharm 2019.3

Widgets interactifs pour les notebooks Jupyter, prise en charge de MongoDB et assistance au codage pour toutes les fonctionnalités de Python 3.8. Téléchargez la nouvelle version dès maintenant, ou réalisez la mise à niveau depuis votre EDI.

Nouveau dans PyCharm

  • Widgets interactifs pour Jupyter Notebooks. Une image vaut mille mots, mais la rendre interactive permet de réellement donner vie à vos données. Les widgets interactifs sont désormais pris en charge par PyCharm.
  • Prise en charge de MongoDB. L’une des bases de données NoSQL les plus utilisées est désormais prise en charge par les outils de base de données inclus dans PyCharm Professional Edition.
  • L’intégralité des fonctionnalités de Python 3.8 sont prises en charge : vous pouvez désormais bénéficier de la saisie automatique du code spécifique à PyCharm lorsque vous utilisez TypedDicts. Nous avons également ajouté la prise en charge des annotations de type Literal.
  • Comment se fait-il que lorsque vous obtenez un fichier CSV il ait toujours un nom interminable, propice aux fautes de frappe ? Nous vous proposons une fonctionnalité très pratique pour remédier à ce problème : la saisie automatique des noms de fichiers dans les méthodes telles que open et read_csv de Panda.

Parmi les améliorations notable de cette version, citons également l’accélération de l’indexation des interpréteurs. Pour une présentation détaillée, consultez la page Nouveautés de notre site.

Auteur de l’article original en anglais : Ernst Haagsman

Posted in New features, Release Announcements | Tagged , , , , | Leave a comment

DataGrip 2019.3 : prise en charge de MongoDB, débogueur pour Oracle, barre de progression pour requêtes Inline et bien plus !

DataGrip 2019.3la troisième grande mise à jour de l’année, elle apporte de nombreuses améliorations à différents niveaux.

DGR

Prise en charge de MongoDB

La prise en charge de MongoDB ayant reçu plus de 400 votes, nous avons commencé à introduire quelques fonctionnalités de base.

UD-Mongo

Voici un aperçu des fonctionnalités de MongoDB qui sont opérationnelles dans cette version :

Introspection : vous pouvez observer les collections et les champs dans l’explorateur de bases de données.

Visionneuse de données : si vous ouvrez une collection ou observez le résultat de la requête, vous pouvez effectuer un tri par colonne ou filtrer les valeurs. La pagination fonctionne également.

Vue en arborescence : il est également possible d’explorer une arborescence des données. Pour activer cette option, cliquez sur Gear icon | View as… | Tree.

Console de requêtes : pour exécuter une instruction, placez le curseur dessus et lancez la console en appuyant sur Ctrl/Cmd+Entrée ou utilisez le bouton Play dans la barre d’outils.

Débogueur Oracle PL/SQL

Dans cette première version du très attendu Débogueur PL/SQL, vous pouvez déboguer des procédures, des fonctions, des déclencheurs et des blocs anonymes, mais aussi observer des variables.

UD-Debug

Pour en savoir plus sur le fonctionnement du débogueur, consultez notre page d’aide . Si vous avez des commentaires sur le débogueur, merci de les publier dans le ticket correspondant.

Travail avec le code source

  • Visionneuse Diff pour les routines
  • Fusion à 3 voies
  • Code prettifier dans PostgreSQL
  • Les intentions fonctionnent maintenant à l’intérieur des codes sources

UD-Sources

Exécution des requêtes

  • Progression des requêtes Inline
  • Flame chart pour le plan d’explication

UD-InlineProgress

Assistance au codage

  • Nouvelles inspections
  • Nouvelles actions d’intention
  • Une option pour trier les lignes par ordre alphabétique
  • Une option limitant la recherche à une zone sélectionnée
  • Résolution respectant les filtres
  • Nouveaux éléments dans le menu Generate

UD-EqualsNull

Éditeur de données

  • Les problèmes liés aux noms ambigus dans le jeu de résultats ont été résolus.
  • L’action Modify Table est maintenant disponible à partir du contexte de l’éditeur de données.

UD-DataEditor

Pour découvrir toutes les nouvelles fonctionnalités et leurs descriptions complètes, consultez la page Nouveautés.

C’est à vous de jouer maintenant :

L’Équipe DataGrip

Auteur de l’article original en anglais : Maksim Sobolevskiy

Posted in New features, Release Announcements | Tagged , , , , | Leave a comment

AppCode 2019.3 : mise en évidence de la syntaxe, complétion et navigation dans le code plus rapides, prise en charge de Swift améliorée, nouvelles intentions Swift, messages de Build et prise en charge de Mac Catalyst !

AppCode 2019.3 est une nouvelle version particulièrement axée sur les performances !

Couverture

Télécharger AppCode 2019.3

Swift

Performances

Nous avions promis de consacrer cette version aux améliorations de performances et c’est chose faite :

  • La mise en évidence de la syntaxe, la saisie automatique du code et la navigation dans les projets Swift purs et mixtes sont beaucoup plus rapides qu’avec AppCode 2019.2.
  • Nous avons aussi boosté la mise en cache afin que la fonction “Processing Swift Modules” soit plus rapide que dans les versions précédentes.

Au cours de ce cycle de publications nous avons initié d’autres améliorations majeures qui devraient être opérationnelles dans la prochaine version. Nous gardons le cap et nos principaux objectifs pour la version 2020.1 sont les performances et la prise en charge du langage.

Prise en charge du langage

AppCode 2019.3 apporte la prise en charge de plusieurs fonctionnalités de Swift 5.1 :

  • SE-0244: types de résultats opaques
  • Wrappers de propriétés : résolution des arguments (OC-18766)
  • Complétion pour SE-0252 (Recherche de membre de chemin d’accès principal)
  • Mise en évidence de la syntaxe des attributs de paramètres

Nouvelles intentions

Tout un ensemble de nouvelles intentions Swift pour accroître votre productivité sont désormais disponibles :

  • Diviser/fusionner une déclaration et une affectation de variable :Diviser/fusionner une déclaration et une attribution de variables
  • Diviser les déclarations de variables contenant plusieurs éléments:Diviser les déclarations de variables contenant plusieurs éléments
  • Diviser/joindre les instructions if/else imbriquées:Diviser/joindre les instructions if/else imbriquées:
  • Inverser les expressions binaires et les comparaisons:Inverser les expressions binaires et les comparaisons
  • Intervertir les conditions if :
    Intervertir les instructions if
  • Fusionner/diviser des conditions :
    Diviser/fusionner des conditions
  • Lois de De Morgan :
    Lois de De Morgan

Génération de code

Nous avons ajouté deux nouvelles options pour générer du code Swift : Prefer Void over () et Prefer explicit return. Vous les trouverez dans Editor | Code Style | Swift | Code Generation | General.

Mise en forme du code

De nouvelles options de mise en forme du code sont disponibles :

  • Maintenez les blocs de propriétés simples incluant willSet/didSet sur une ligne (Preferences | Editor | Code Style | Swift | Wrapping and Braces | Keep when reformatting | Methods and functions in one line).
  • Maintenez les déclarations de types vides sur une ligne (Preferences | Editor | Code Style | Swift | Wrapping and Braces | Keep when reformatting | Empty type declarations in one line).

Chaînes d’outils Swift alternatives

Vous travaillez avec la chaîne d’outils Swift Tensorflow ou une autre chaîne d’outils Swift personnalisée ? Les constructions de code pour les chaînes d’outils Swift personnalisées se chargement maintenant correctement et peuvent être utilisées pour la génération de build, l’exécution, le débogage et les tests.

Messages de build

Nous avons corrigé des dizaines de problèmes qui affectaient l’expérience utilisateur en remaniant l’arborescence des Messages, qui affiche maintenant les mêmes informations que Xcode :

Messages de build

La barre de progression du build reflète maintenant avec exactitude le temps restant avant la compilation de votre application :

Progression des messages de build

Le filtre de messages est simplifié et propose désormais les mêmes options que Xcode : All Issues, Errors and Warnings et Errors Only.

Filtre pour les messages de build

Prise en charge de Mac Catalyst

L’assistance au codage, la génération de build, l’exécution et le débogage fonctionnent désormais pour les projets Mac Catalyst.

C’est tout pour le moment ! Explorez les nouvelles fonctionnalités en détail sur notre site Web et profitez d’une version d’essai gratuite de 30 jours pour juger par vous-même !

Télécharger AppCode 2019.3

L’équipe AppCode
JetBrains
The Drive to Develop

Auteur de l’article original en anglais : Stanislav Dombrovsky

Posted in Uncategorized | Tagged , , , , | Leave a comment

Nouveautés de YouTrack 2019.3

Blog

La version 2019.3 de YouTrack apporte de nouvelles fonctionnalités et améliorations de l’expérience utilisateur.

La principale nouveauté réside dans la liste de tickets, dont l’aspect comme les performances ont été améliorés, avec notamment une nouvelle barre latérale, une nouvelle barre d’outils et le thème sombre. Nous avons aussi ajouté un nouveau widget Issue Activity Feed pour les tableaux de bord et les pages de projets, la prise en charge de HTML dans Markdown, l’intégration avec des systèmes de contrôle de versions supplémentaires, et d’autres améliorations pour vous aider à mieux gérer les tickets et les pièces jointes.

Les nouvelles options de langue ouvrent les portes de la localisation communautaire pour le chinois simplifié, l’hébreu, le hongrois et le coréen. Les rapports bénéficient d’une navigation améliorée et les tableaux Kanban ajoutent de nouveaux tickets automatiquement. Nous proposons également de nouveaux moyens de gérer les cycles de vie des projets.

Liste des tickets remaniée accessible à tous

Auparavant disponible en tant que fonctionnalité expérimentale, la nouvelle Liste des tickets est désormais accessible à tous ! Vous pouvez basculer vers le thème sombre en accédant à votre photo de profil, utiliser les nouvelles barre latérale et barre d’outils repliables, et filtrer les tickets juste sous la barre de recherche. Vous pouvez également choisir les champs que vous souhaitez rendre visibles dans la liste des tickets et utiliser des actions pour sélectionner et appliquer une commande à tous les tickets en un seule fois. La liste s’adapte mieux aux divers écrans et tailles de fenêtres, ce qui améliore ses performances et son apparence sur vos appareils.

IssueList_m

Pour vos tableaux de bord et pages de projets : un widget Issue Activity Feed

Utilisez ce widget personnalisable pour rester informé des activités récentes concernant les tickets et les projets dans lesquels vous êtes impliqué. Il fonctionne comme un flux d’activités que vous pouvez ajouter à votre tableau de bord ou à votre projet et utiliser de plusieurs façons.

Tableaux de bord personnels

Ajoutez le widget Issue Activity Feed à votre tableau de bord pour obtenir un aperçu en temps réel de l’actualité de vos projets. Choisissez et filtrez les projets, tickets et modifications que vous souhaitez voir. Le flux d’activité des tickets peut être utilisé comme une alternative aux notifications par e-mail que vous auriez reçu si des modifications étaient apportées aux tickets YouTrack auxquels vous êtes abonné. Vous pouvez aussi utiliser le widget pour afficher un flux pour chaque action, pour bénéficier d’une vue d’ensemble sur le projet.

Un guide détaillé sur l’ajout du widget est disponible dans la documentation.

Widget_m

Page de projet

Les administrateurs du projet peuvent utiliser le widget Issue Activity Feed pour ajouter du contenu aux pages de destination du projet. Par exemple, le filtrage des nouveaux tickets et des tickets résolus avec un ou deux widgets d’activité ajoutés sur la page du projet dans Hub peut aider vos utilisateurs à voir l’état actuel du projet.

Mise en forme de vos tickets : prise en charge de HTML dans Markdown, pièces jointes simplifiées et blocs de code

La prise en charge de HTML vous permet d’aller plus loin avec Markdown lorsque vous travaillez sur des tickets. Vous pouvez désormais mettre en forme le contenu des tickets en HTML et améliorer leurs descriptions, les commentaires et les champs de texte avec des blocs réductibles, des couleurs de texte personnalisées, des sauts de ligne dans les cellules de tableaux, etc.

HTMLm

Nous avons amélioré l’apparence des blocs de code délimités dans Markdown. Les blocs de code dans un langage donné affichent une balise de langage et des numéros de ligne pour le code. Les blocs qui sont déclarés en tant que texte s’affichent dans une police à espacement fixe, sans mise en évidence des éléments syntaxiques.

CodeBlocks

Par ailleurs, vous pouvez ajouter des liens directs vers les fichiers joints à un ticket. Au lieu de demander aux autres utilisateurs de deviner de quelle pièce jointe vous parlez, pointez directement vers elle. Et vous pouvez partager les fichiers qui sont joints aux tickets en partageant leur URL.

Pour vos systèmes de contrôle de versions : nouvelles Intégrations

Vous pouvez maintenant lier vos projets YouTrack à des référentiels hébergés sur un serveur Bitbucket, une installation Gogs ou Gitea.

VCS_m

Les paramètres des intégrations avec TeamCity acceptent désormais un jeton pour l’autorisation à la place d’un nom d’utilisateur et d’un mot de passe. Vous n’avez donc plus besoin de stocker vos mots de passe personnels dans les paramètres d’intégration et pouvez librement mettre à jour vos mots de passe sans briser vos intégrations.

Pour nos utilisateurs non anglophones : nouvelles localisations communautaires

Vous pouvez maintenant essayer quatre langues supplémentaires, prises en charge par la localisation communautaire : le chinois simplifié, l’hébreu, le hongrois, et le coréen. Les membres de notre communauté ont commencé à travailler avec YouTrack dans ces langues et à ajouter leurs traductions. Inutile de dire que tous ces efforts sont très appréciés ! Ces options linguistiques sont désormais disponibles au niveau global ou par utilisateur.

Language_m

Il reste encore beaucoup à faire dans ce domaine, vous êtes donc les bienvenus si vous souhaitez vous joindre à nos efforts de localisation et aider la communauté !

Pour les rapports : une navigation améliorée

La page Rapports comporte désormais une barre latérale actualisée qui vous permet d’accéder en un clic à vos rapports préférés et de masquer ceux que vous n’utilisez pas.

ReportsM

La création de rapports à partir de la liste des tickets a été repensée : vous pouvez désormais trouver tous les rapports depuis le panneau de navigation principal en haut de la page.

ReportsNavigation

 

Pour les tableaux Kanban : ajoutez automatiquement de nouveaux tickets

Une option permettant d’ajouter automatiquement de nouveaux tickets est à présent disponible pour les tableaux agiles qui n’utilisent pas de sprints. Les équipes qui suivent un flux Kanban peuvent ainsi gérer l’ensemble de leurs tickets au même endroit.

Kanban_m

Pour les projets évolutifs : nouvelle gestion du cycle de vie

Vous pouvez modifier le nom du projet, le préfixe des tickets (communément ID projet), ou les deux, au fil de l’évolution et de la croissance de vos projets. Cela n’affectera aucun lien interne ou externe vers votre projet ou vos tickets.

YouTrack stocke désormais la collection des identifiants précédemment utilisés en tant que préfixes du ticket dans un projet. Si vous modifiez l’identifiant d’un projet, les identifiants des tickets de ce projet sont également mis à jour. Les liens externes vers les tickets utilisant les anciens identifiants du projet sont redirigés vers les tickets utilisant l’identifiant actuel du projet.

De plus, la possibilité d’archiver les valeurs des champs qui stockent des données sous forme de version est maintenant étendue aux valeurs des champs supplémentaires qui stockent des types énumérés. Mettez de côté les valeurs que vous ne souhaitez plus utiliser sans appliquer de mises à jour indésirables à de grands ensembles de tickets.

Et pour finir

YouTrack est désormais livré avec Java SE 11 et tous les derniers correctifs de sécurité des fournisseurs Java en place. Il ne dépend plus de Java 8.

Vos commentaires comptent pour nous, alors n’hésitez pas à les partager dans la section ci-dessous. Et bien sûr, contactez-nous si vous avez des questions ou des difficultés – nous sommes toujours là pour vous aider !

L’équipe YouTrack

Auteur de l’article original en anglais : Elena Pishkova

Posted in New features, Release Announcements | Tagged , , , , , , , | Leave a comment