1. 20 Oct, 2020 2 commits
  2. 19 Oct, 2020 3 commits
  3. 16 Oct, 2020 2 commits
  4. 12 Oct, 2020 1 commit
  5. 05 Oct, 2020 1 commit
  6. 03 Oct, 2020 1 commit
  7. 02 Oct, 2020 1 commit
  8. 01 Oct, 2020 9 commits
  9. 30 Sep, 2020 10 commits
    • Christian Hergert's avatar
      README: update dependencies · 9eda2732
      Christian Hergert authored
      9eda2732
    • Christian Hergert's avatar
      Merge branch 'wip/chergert/pcre2' into 'master' · f6d5192b
      Christian Hergert authored
      Add support for PCRE2 in GtkSourceRegex
      
      Closes #158
      
      See merge request !166
      f6d5192b
    • Christian Hergert's avatar
      pcre2: use JIT for PCRE2 matching · bde1ff06
      Christian Hergert authored
      If the JIT is supported, lets use it. This has some rather good performance
      benefits with a bit of memory overhead for the JITd code pages. In
      particular, the cost of regex creation goes up by about 4x (using C as an
      example language syntax). The average runtime of those regex drops by about
      the same magnitude (4x). However, the worst cases can drop significantly
      with local tests showing an order of magnitude less (10x).
      
      All our regex are cached by the source language, so the amount we run
      the regex compared to creation of them is significant.
      
      The goal here is that we can save a lot of time during updates for other
      main loop work if we save how much we spend in Regex. It also means we can
      support larger files without timing out (currently 2msec timeout per-line
      before hitting protections).
      
      Some basic numbers compariing a non-JIT PCRE2 to a JIT PCRE2. We're comparing
      PCRE2 in both cases, although it alone is an improvement over GRegex.
      
      Creating regexes:
      
        +-----------+-------+-------+------+
        | Language  |  Min  |  Max  | Avg  |
        +-----------+-------+-------+------+
        | C         |  .001 |  .104 | .007 |
        | C (JIT)   |  .004 |  .383 | .031 |
        | CSS       |  .001 |  .711 | .022 |
        | CSS (JIT) |  .004 | 3.147 | .101 |
        | JS        |  .001 |  .186 | .011 |
        | JS (JIT)  |  .003 | 4.474 | .050 |
        +-----------+-------+-------+------+
      
      Executing regexes:
      
        +-----------+-------+-------+------+-------------------+
        | Language  |  Min  |  Max  | Avg  | Notes             |
        +-----------+-------+-------+------+-------------------+
        | C         |  .000 |  .196 | .003 | gtktreeview.c     |
        | C (JIT)   |  .000 |  .061 | .001 | gtktreeview.c     |
        | CSS       |  .000 |  .211 | .022 | gtk-contained.css |
        | CSS (JIT) |  .000 |  .068 | .001 | gtk-contained.css |
        | JS        |  .000 |  .215 | .001 | windowManager.js  |
        | JS (JIT)  |  .000 |  .108 | .000 | windowManager.js  |
        +-----------+-------+-------+------+-------------------+
      
      An important thing to remember here is how often these functions are called.
      Creating regexes is done a few times, while executing them are hundreds of
      thousands to millions of times even for just loading a file.
      
      Since we need to highlight things between drawing of frames on the main loop
      anything we can do to reduce this overhead increases our ability to stay smooth
      while drawing. Further more, it allows for highlighting files with longer lines
      where we might otherwise trip up.
      
      Fixes #158
      bde1ff06
    • Christian Hergert's avatar
      pcre2: port GtkSourceRegex to PCRE2 · dfcf34ef
      Christian Hergert authored
      The goal here is to move to a JIT backed PCRE2 implementation, however
      this just gets an initial port in place to use PCRE2 for this code. We can
      eventually move other parts of GtkSourceView over to this implementation
      as well depending on how complete we need to be.
      dfcf34ef
    • Christian Hergert's avatar
      gtksourceregex: wrap GRegex through a shim · 1c6e2ce1
      Christian Hergert authored
      This creates an ImplRegex intermediate structure that we can use to switch
      the implementation from GRegex into PCRE2. Doing so will not only be
      faster, but also allow us to eventually migrate to using a JIT for the
      regex implementation as well as avoid deprecations from GRegex in future
      releases of GLib.
      
      Other modules will eventually need to be ported to this, but focusing on
      GtkSourceRegex would result in the largest gain from language specs.
      1c6e2ce1
    • Christian Hergert's avatar
      tests: allow passing filename to test-widget · 89dfadf9
      Christian Hergert authored
      Just for convenience to open new files that may error on specific
      conditions.
      89dfadf9
    • Christian Hergert's avatar
      build: allow using Builder for development · f98c7e1b
      Christian Hergert authored
      By providing a Flatpak manifest, we can start using Builder for
      development so that things are easier for new contributors.
      
      This also uses Sysprof for profiler integration so that we can
      do performance testing from various subsystems during
      development.
      f98c7e1b
    • Christian Hergert's avatar
      build: install gtksourceview5-test · 5e9876d3
      Christian Hergert authored
      If -Dinstall_tests=true then we will now install the test-widget
      application as gtksourceview5-test. This can be useful primarily
      in developer situations like using Flatpak as a build
      environment for testing but also for conformance testing on
      something like GNOME OS images.
      5e9876d3
    • Christian Hergert's avatar
      tests: add title to test window · 6c062d66
      Christian Hergert authored
      6c062d66
    • Christian Hergert's avatar
      git: add .gitignore · 252cb756
      Christian Hergert authored
      252cb756
  10. 26 Sep, 2020 1 commit
  11. 24 Sep, 2020 1 commit
  12. 23 Sep, 2020 4 commits
  13. 22 Sep, 2020 4 commits