Django Rusty Templates Since September 2024, I have been building a reimplementation of Django’s templating language in Rust, called Django Rusty Templates. During this process, I have discovered several weird edge-cases and bugs. Scientific notation Django supports writing floats in scientific notation (e.g. 6.28e23) in templates. However using a negative exponent was not supported: "{{ foo|default:5.2e-3 }}" Traceback (most recent call last): TemplateSyntaxError: Could not parse the remainder: '-3' from 'foo|default:5.2e-3' >>> from django.template.base import Template >>> Template("{{ foo|default:5.2e-3 }}") Traceback (most recent call last): ... raise TemplateSyntaxError( django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '-3' from 'foo|default:5.2e-3' ...
How we reduced the memory usage of our Rust extension by 4x
This post was originally published on the Kolo Blog and has been republished here with thanks to Wil Klopp. What is Kolo? Kolo is a dynamic code analysis tool for Python. We use Python’s sys.setprofile to introspect Python’s call stack and local variables. For performance reasons, Kolo is partially implemented in Rust using the excellent PyO3 crate. The bug report Recently, we received a report of Kolo running out of memory when analysing an unusually large Django view. To get an idea of what was causing it, I created a very simple python script that would generate a lot of python frames: ...