Java implementation of Python
POPULARITY
We've read the PEP on making the Global Interpreter Lock optional so you don't have to. Timestamps (00:00:00) Intro (00:00:50) CURRENT STATE OF THINGS (00:00:58) Reference counting (00:01:35) Garbage collection (00:02:33) What is the Global Interpreter Lock? (00:03:57) The GIL and threading (00:07:24) Current ways around the GIL (00:09:26) HISTORICAL ATTEMPTS TO REMOVE THE GIL (00:09:46) 1999: Greg Stein's attempt at Python 1.6 (00:10:46) Jython doesn't have the GIL (00:11:19) 2015: Larry Hastings' Gilectomy at Python 3.5 (00:12:34) Pablo says removing the GIL is actually very easy (00:13:24) Łukasz is skeptical (00:14:20) 2021: Sam Gross' nogil at Python 3.9 (00:18:22) 2023: PEP 703 for Python 3.13 (00:20:05) PEP 703 IN DETAIL (00:20:20) Biased Reference Counting (00:25:19) Other needed speedups: deferred refcounts, immortalization, GC (00:28:41) mimalloc (00:34:46) More GC changes (00:38:20) eval breaker (00:42:08) Thread-safe standard collections (00:45:26) Fast paths vs. slow paths (00:49:47) Reading freed memory with mimalloc is kinda okay? (00:58:06) Specializations become harder to implement without the GIL (01:01:27) PEP 703 terms of acceptance (01:04:08) No free lunch (01:09:25) It's now or never (01:11:59) Outro
We are now launching our dedicated new YouTube and Twitter! Any help in amplifying our podcast would be greatly appreciated, and of course, tell your friends! Notable followon discussions collected on Twitter, Reddit, Reddit, Reddit, HN, and HN. Please don't obsess too much over the GPT4 discussion as it is mostly rumor; we spent much more time on tinybox/tinygrad on which George is the foremost authority!We are excited to share the world's first interview with George Hotz on the tiny corp!If you don't know George, he was the first person to unlock the iPhone, jailbreak the PS3, went on to start Comma.ai, and briefly “interned” at the Elon Musk-run Twitter. Tinycorp is the company behind the deep learning framework tinygrad, as well as the recently announced tinybox, a new $15,000 “luxury AI computer” aimed at local model training and inference, aka your “personal compute cluster”:* 738 FP16 TFLOPS* 144 GB GPU RAM* 5.76 TB/s RAM bandwidth* 30 GB/s model load bandwidth (big llama loads in around 4 seconds)* AMD EPYC CPU* 1600W (one 120V outlet)* Runs 65B FP16 LLaMA out of the box (using tinygrad, subject to software development risks)(In the episode, we also talked about the future of the tinybox as the intelligence center of every home that will help run models, at-home robots, and more. Make sure to check the timestamps
¿Se pueden usar diferentes versiones de una misma librería en un proyecto? (resumen: ¡No vayas por ahí!). MultiVersion Concurrent Control https://podcast.jcea.es/python/19 Participantes: Jesús Cea, email: jcea@jcea.es, twitter: @jcea, https://blog.jcea.es/, https://www.jcea.es/. Conectando desde Madrid. Víctor Ramírez, twitter: @virako, programador python y amante de vim, conectando desde Huelva. Javier, conectando desde Madrid. Miguel Sánchez, email: msanchez@uninet.edu, conectando desde Canarias. Audio editado por Pablo Gómez, twitter: @julebek. La música de la entrada y la salida es "Lightning Bugs", de Jason Shaw. Publicada en https://audionautix.com/ con licencia - Creative Commons Attribution 4.0 International License. [00:52] Prólogo: FOSDEM https://fosdem.org/. Escuchar audios previos para ver errores y comentar "erratas". [03:07] ¡Tenemos un voluntario para editar el podcast! Detalles de cómo grabamos las tertulias. Todo se graba en una sola pista :-(. RNNoise: https://people.xiph.org/~jm/demo/rnnoise/. Ideas para automatizar el proceso. [09:17] Aviso legal de que se está grabando el sonido y que se va a publicar online. El audio publicado tendrá un índice en texto, para poder hacer búsquedas y poder moverse con facilidad entre temas. [11:22] Errata de la tertulia anterior: No, pipenv https://pypi.org/project/pipenv/ no puede instalar dos versiones diferentes de la misma librería. [13:07] Tormenta de ideas https://es.wikipedia.org/wiki/Lluvia_de_ideas sobre cómo usar diferentes versiones de la misma librería en el mismo proyecto. Conclusión: ¡No vayas por ahí! Las bibliotecas solo se cargan una vez en el programa, aunque se hagan muchos import en el código. sys.modules https://docs.python.org/3/library/sys.html#sys.modules. Dependencias transitivas. Subintérpretes Python. PEP 554: https://www.python.org/dev/peps/pep-0554/. Módulos en C: PEP 489 -- Multi-phase extension module initialization https://www.python.org/dev/peps/pep-0489/. [22:17] Python 3.10a5. PEP 636 -- Structural Pattern Matching: Tutorial https://www.python.org/dev/peps/pep-0636/. ¡Más sintaxis nueva! PEP 617 -- New PEG parser for CPython https://www.python.org/dev/peps/pep-0617/. [23:57] Nuitka https://nuitka.net/. Puede generar un binario que no depende de tener nada instalado. [26:02] Volvemos a "Structural Pattern Matching" https://www.python.org/dev/peps/pep-0636/. "Switch" con esteroides. [27:32] Lo importante que fue la modernización de los tutoriales y ejemplos para ayudar a la migración de Python 2 a Python 3. PEP 414 -- Explicit Unicode Literal for Python 3.3 https://www.python.org/dev/peps/pep-0414/. Jesús Cea opina que la migración de Python 2 a Python 3 se hizo mal y ha sido muy traumática. [30:22] PEP 8 https://www.python.org/dev/peps/pep-0008/. ¿Ajustarse estrictamente a 80 columnas? Flake8: https://pypi.org/project/flake8/. [33:22] Mucho cuidado con "python-ideas" https://mail.python.org/mailman3/lists/python-ideas.python.org/. Tabulación de código. La anotación de tipos puede gustar o no, pero de momento es opcional. Tema recurrente: ¿Qué es ser pythonico? [35:12] Ventajas de anotar tipos. Origen de MYPY: http://mypy-lang.org/. Aportar información al IDE https://en.wikipedia.org/wiki/Integrated_development_environment. Valor a la hora de documentar los tipos en los API https://en.wikipedia.org/wiki/API. [39:52] Cryptography https://cryptography.io/en/latest/ y polémica al integrar módulos en Rust https://en.wikipedia.org/wiki/Rust_(programming_language) Comunidad tóxica. [41:27] Digresión sobre systemd https://en.wikipedia.org/wiki/Systemd y otras cosas de sistemas. ¿El cambio por el cambio? [45:07] El peso de la web está moviéndose otra vez al backend. ¿Qué opciones tiene Python en este area? El cliente web solo envía eventos al servidor y recibe cambios al DOM https://es.wikipedia.org/wiki/Document_Object_Model enviadas por el servidor. Abre la posibilidad olvidarnos de JavaScript: https://es.wikipedia.org/wiki/JavaScript. ItsNat: https://en.wikipedia.org/wiki/ItsNat. [51:02] splash https://pypi.org/project/splash/. Servicio de dibujado de javascript en Python. AJAX: https://es.wikipedia.org/wiki/AJAX. [56:07] Integrar Python en otros programas y demonios. LUA: https://es.wikipedia.org/wiki/Lua. [57:07] PyOxidizer https://pyoxidizer.readthedocs.io/en/stable/ y PyO3 https://pyo3.rs/. Interactuar con otros lenguajes. Python en Java, interactuando sin dolor: Jython https://www.jython.org/. [59:52] ¿Cómo empezamos en Python? Valor de Python como lenguaje fácil de entender y pseudocódigo. SpamBayes: http://spambayes.sourceforge.net/. Tutorial de Python: https://docs.python.org/es/3/tutorial/index.html. bc -l https://linux.die.net/man/1/bc. [01:05:07] Modificación atómica de ficheros. En Unix se suele hacer: write + flush + rename. rename: https://www.man7.org/linux/man-pages/man2/rename.2.html. MS Windows eso no funciona. Python 3.3 añadió os.replace() https://docs.python.org/3.8/library/os.html#os.replace. En MS Windows es atómico... casi siempre: Issue8828: Atomic function to rename a file https://bugs.python.org/issue8828. [01:10:02] Combinar fork e hilos en Python es una receta para el desastre. fork: https://www.man7.org/linux/man-pages/man2/fork.2.html. multiprocessing: https://docs.python.org/3/library/multiprocessing.html. [01:11:37] Decorador @overload https://docs.python.org/3/library/typing.html#typing.overload. @functools.singledispatch https://docs.python.org/3/library/functools.html. ¿Qué se ve cuando salta una excepción? Especializaciones. Cython https://cython.org/. [01:17:00] AnyIO https://anyio.readthedocs.io/en/stable/basics.html. Unificación de reactores asíncronos. [01:18:12] "lxml soporta xpath". Hilo en la lista de correo: "[Python-es] Biblioteca XPATH" https://mail.python.org/pipermail/python-es/2021-February/037931.html. lxml: https://lxml.de/. beautifulsoup4: https://pypi.org/project/beautifulsoup4/. XPath: https://es.wikipedia.org/wiki/XPath. Scrapy: https://scrapy.org/. El buscador de PyPI https://pypi.org/ funciona fatal a la hora de ordenar por relevancia. [01:20:02] El valor de estudiar el código fuente ajeno no solo para aprender de él sino también para descubrir qué bibliotecas útiles utilizan para añadirlas a tu cajón de herramientas. Es la documentación última. Los tests son muy útiles para saber cómo se usa el producto. [01:22:02] ¿Cómo gestionáis la paginación cuando los datos del backend cambian? ¿Cómo evitáis repetir resultados o saltaros datos? Brainstorming de diversas estrategias. Berkeley DB: https://pypi.org/project/berkeleydb/. lmdb: https://pypi.org/project/lmdb/. Multiversion concurrency control: https://es.wikipedia.org/wiki/Multiversion_concurrency_control. Copy on Write: https://es.wikipedia.org/wiki/Copy_on_write. Snapshot: https://es.wikipedia.org/wiki/Copia_instant%C3%A1nea_de_volumen. BTree: https://es.wikipedia.org/wiki/%C3%81rbol-B. PostgreSQL: https://www.postgresql.org/. ZFS: https://es.wikipedia.org/wiki/ZFS_(sistema_de_archivos). Normalización y formas normales: https://es.wikipedia.org/wiki/Forma_normal_(base_de_datos). [01:48:42] FOSDEM https://fosdem.org/: Virako recomienda las siguientes: Some SQL Tricks of an Application DBA - Non-trivial tips for database development https://fosdem.org/2021/schedule/event/postgresql_some_sql_tricks_of_an_application_dba/. Database Disasters and How to Find Them https://fosdem.org/2021/schedule/event/postgresql_database_disasters_and_how_to_find_them/. Practical advice for using Mypy - Hidden gems in the typing system! https://fosdem.org/2021/schedule/event/python_mypy/. Escaping the Cargo Cult - How to structure your project without losing your mind. https://fosdem.org/2021/schedule/event/python_escaping_cargo_cult/. [01:52:02] Charla Python Madrid https://www.python-madrid.es/. TDD - ¿panacea del desarrollo o pérdida de tiempo? https://www.python-madrid.es/meetings/reunion-febrero-2021-python-madrid/. [01:54:27] Comentado en la tertulia de la semana pasada: Bugs sobre "pickle" https://docs.python.org/3/library/pickle.html en el módulo __main__. Se trata de un problema conocido. Ejemplo de código: https://pastebin.com/vGM1sh8r. Issue24676: Error in pickle using cProfile https://bugs.python.org/issue24676. Issue9914: trace/profile conflict with the use of sys.modules[__name__] https://bugs.python.org/issue9914. Issue9325: Add an option to pdb/trace/profile to run library module as a script https://bugs.python.org/issue9325. [02:00:42] Que te cuenten lo que no funciona es mucho más interesante. Postmortem. [02:02:52] Whoosh: https://whoosh.readthedocs.io/en/latest/intro.html. ¿Cómo normalizar las palabras para español? La palabra "real" Whoosh: https://www.wordreference.com/es/translation.asp?tranword=whoosh. Dificultades para buscar el proyecto Python Whoosh https://whoosh.readthedocs.io/en/latest/intro.html en internet. [02:05:48] Final.
Link to bioRxiv paper: http://biorxiv.org/cgi/content/short/2020.11.19.386565v1?rss=1 Authors: Haase, R., Jain, A., Rigaud, S., Vorkel, D., Rajasekhar, P., Suckert, T., Lambert, T. J., Nunez-Iglesias, J., Poole, D. P., Tomancak, P., Myers, E. W. Abstract: Modern life science relies heavily on fluorescent microscopy and subsequent quantitative bio-image analysis. The current rise of graphics processing units (GPUs) in the context of image processing enables batch processing large amounts of image data at unprecedented speed. In order to facilitate adoption of this technology in daily practice, we present an expert system based on the GPU-accelerated image processing library CLIJ: The CLIJ-assistant keeps track of which operations formed an image and suggests subsequent operations. It enables new ways of interaction with image data and image processing operations because its underlying GPU-accelerated image data flow graphs (IDFGs) allow changes to parameters of early processing steps and instantaneous visualization of their final results. Operations, their parameters and connections in the IDFG are stored at any point in time enabling the CLIJ-assistant to offer an undo-function for virtually unlimited rewinding parameter changes. Furthermore, to improve reproducibility of image data analysis workflows and interoperability with established image analysis platforms, the CLIJ-assistant can generate code from IDFGs in programming languages such as ImageJ Macro, Java, Jython, JavaScipt, Groovy, Python and C++ for later use in ImageJ, Fiji, Icy, Matlab, QuPath, Jupyter Notebooks and Napari. We demonstrate the CLIJ-assistant for processing image data in multiple scenarios to highlight its general applicability. The CLIJ-assistant is open source and available online: https://clij.github.io/assistant/ Copy rights belong to original authors. Visit the link for more info
First comes hate(rs), then comes committers. Then comes a tag, in the github app reporting its woes, committing new code doing the hula hula dance! Ok, so one of the biggest stories is that blooming collaboration (romance?) that's happening between Spring and Graal. Yep, the most popular framework is teaming up with the hottest VM in town (this sounds like a movie script already!). We also dive into some unexpected releasers like Jython 2.7.2, new leadership for the ASF (And its board of directors), and a game of "where in the world is Istio (not Carmen Sandiego) going?" played by Google. In all, with drinks in hand, on remote, a fun episode to listen to. We thank DataDogHQ for sponsoring this podcast episode DO follow us on twitter @offheap JFrog's blog on Carl Quinn Java Posse Episode, where JavaPubHouse (and later OffHeap) was (1:15:00 mark) SpringOne, virtual and free Lightbend Layoffs? Spring-graal Native Confluent (Apache Kafka) Seed Round Jakarta EE Developer Survey ASF Board of Directors Java 15 Release Date Quarkus 1.3.2 Final Jython 2.7.2 Released! Istio goin to a Foundation
Here are the show notes for Episode 1 “A Luta Continua” (“The Struggle Continues”). Mainframe Our “Mainframe” topic is about the new z/OS V2.2 ISPF 3.17 Mount Table enhancement. To try it out on z/OS V2.2: ISPF 3.17, then File_Systems pull down, then the new options are #1 or #2. Type “x” for toggling between expanding and contracting. Use the Help pulldown for more commands available. Performance Our “Performance” topic is about long term page fixing DB2 buffer pools, and a related question: Whether to use 1MB pages. Topics Under “Topics” we discussed Markdown, a very easy way of creating formatted text. (In fact these notes were written in Markdown using a plain text editor on Linux.) Not that we are heavy users of Android apps there are apparently plenty of Markdown tools there too. See here. Martin briefly mentioned the possibility of driving Python's Markdown processor Python Markdown on z/OS using Jython (which is Python interpreted using Java). From The Blog Batch DB2 And MQ The Easy Way Oh The Arrogance Of It Ask Me Anything about z/OS Security Contacting Us You can reach Marna on Twitter as mwalle and by email. You can reach Martin on Twitter as martinpacker and by email. Or you can leave a comment below.
As mentioned in my last Saturday podcast this podcast is dedicated to CPython. Get your concept clear about what is CPython, Jython,IronPython. --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app --- Send in a voice message: https://anchor.fm/aihindishow/message Support this podcast: https://anchor.fm/aihindishow/support
So we recorded this nearly two months ago, but some family stuff delayed the release of this and Episode 64 (coming very soon). On this episode we talk about large developers, cars, Ed learning Java against his will, and Chris re-learning how to teach people. Do these things! Check out our sponsors: Roave and WonderNetwork Buy stickers at devhell.info/shop Follow us on Twitter here Rate us on iTunes here Listen Download now (MP3, 70.1MB, 1:20:05 ) Links and Notes Mondelēz International Neo4j Clojure Scala Akka Jython JRuby Maven Elevation Dock Amazon Echo How common is the name ‘Alexa’ Boldt Castle
De sidste par måneder har Kresten Krab Thorup arbejdet på et projekt der går ud på at lave "Erjang", en Java-udgave af Erlang, ligesom JRuby er det for Ruby, og Jython er det for Python. Nu er det jo efterhånden ikke nogen nyhed, at det er interessant at forstå, hvordan vi på en effektiv og forståelig måde kan udnytte parallelitet. Problemet bliver i disse år bare mere og mere presserende med udviklingen i hardware og i den grad hvormed vi laver store distribuerede systemer med SOA og netværksservices. Erlang har gode bud på disse problemstillinger, og det er ikke bare noget smart nyt teknolog: det har nemlig været i anvendelse i mere end 20 år - i produktion - til at lave netop pålidelige distribuerede systemer. Find Erjang her: http://wiki.github.com/krestenkrab/erjang
De sidste par måneder har Kresten Krab Thorup arbejdet på et projekt der går ud på at lave "Erjang", en Java-udgave af Erlang, ligesom JRuby er det for Ruby, og Jython er det for Python. Nu er det jo efterhånden ikke nogen nyhed, at det er interessant at forstå, hvordan vi på en effektiv og forståelig måde kan udnytte parallelitet. Problemet bliver i disse år bare mere og mere presserende med udviklingen i hardware og i den grad hvormed vi laver store distribuerede systemer med SOA og netværksservices. Erlang har gode bud på disse problemstillinger, og det er ikke bare noget smart nyt teknolog: det har nemlig været i anvendelse i mere end 20 år - i produktion - til at lave netop pålidelige distribuerede systemer. Find Erjang her: http://wiki.github.com/krestenkrab/erjang
A very quick look at version 2 of our Jython implementation of Conway’s Game of Life. Source code