Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gap-profiling for openSUSE:Factory checked in at 2026-07-31 15:31:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gap-profiling (Old) and /work/SRC/openSUSE:Factory/.gap-profiling.new.2004 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gap-profiling" Fri Jul 31 15:31:17 2026 rev:7 rq:1368543 version:2.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gap-profiling/gap-profiling.changes 2025-06-23 15:03:53.018256373 +0200 +++ /work/SRC/openSUSE:Factory/.gap-profiling.new.2004/gap-profiling.changes 2026-07-31 16:07:15.160314648 +0200 @@ -1,0 +2,6 @@ +Thu Jul 30 09:36:35 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 2.6.3 + * Remove unnecessary dependency on gapdoc + +------------------------------------------------------------------- Old: ---- profiling-2.6.2.tar.gz New: ---- profiling-2.6.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gap-profiling.spec ++++++ --- /var/tmp/diff_new_pack.7RvLF3/_old 2026-07-31 16:07:15.640331350 +0200 +++ /var/tmp/diff_new_pack.7RvLF3/_new 2026-07-31 16:07:15.644331489 +0200 @@ -1,7 +1,7 @@ # # spec file for package gap-profiling # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: gap-profiling -Version: 2.6.2 +Version: 2.6.3 Release: 0 Summary: GAP: Line-by-line profiling and code coverage for GAP License: CDDL-1.0 AND MIT @@ -30,7 +30,6 @@ BuildRequires: gap-rpm-devel BuildRequires: python-rpm-macros Requires: gap-core >= 4.12 -Requires: gap-gapdoc >= 1.5 Requires: gap-io >= 4.4.4 %description ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.7RvLF3/_old 2026-07-31 16:07:15.680332742 +0200 +++ /var/tmp/diff_new_pack.7RvLF3/_new 2026-07-31 16:07:15.684332881 +0200 @@ -1,5 +1,5 @@ -mtime: 1750549695 -commit: 6c1c361cd2c78845da17945c6120160fe1a13c927a24550a37db07f7ce9bb0a3 +mtime: 1785404212 +commit: 39cfa6e852c4356b3104de70c80cffd073592d01dbe739632e884a6c3783b37c url: https://src.opensuse.org/jengelh/gap-profiling revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-30 11:36:52.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ profiling-2.6.2.tar.gz -> profiling-2.6.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/HISTORY.md new/profiling-2.6.3/HISTORY.md --- old/profiling-2.6.2/HISTORY.md 2025-06-21 17:55:24.000000000 +0200 +++ new/profiling-2.6.3/HISTORY.md 2026-07-29 15:16:02.000000000 +0200 @@ -1,3 +1,9 @@ +2.6.3 +===== + +* Remove unneeded dependancy on GAPDoc +* Many changes to CI (does not effect usage) + 2.6.2 ===== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/PackageInfo.g new/profiling-2.6.3/PackageInfo.g --- old/profiling-2.6.2/PackageInfo.g 2025-06-21 17:55:24.000000000 +0200 +++ new/profiling-2.6.3/PackageInfo.g 2026-07-29 15:16:02.000000000 +0200 @@ -10,8 +10,8 @@ PackageName := "profiling", Subtitle := "Line by line profiling and code coverage for GAP", -Version := "2.6.2", -Date := "21/06/2025", # dd/mm/yyyy format +Version := "2.6.3", +Date := "29/07/2026", # dd/mm/yyyy format License := "MIT AND CDDL-1.0", Persons := [ @@ -20,7 +20,7 @@ IsMaintainer := true, FirstNames := "Christopher", LastName := "Jefferson", - WWWHome := "https://caj.host.cs.st-andrews.ac.uk/", + WWWHome := "https://heather.cafe/", Email := "[email protected]", PostalAddress := Concatenation( "St Andrews\n", @@ -70,7 +70,7 @@ Dependencies := rec( GAP := ">= 4.12", - NeededOtherPackages := [ [ "GAPDoc", ">= 1.5" ], ["IO", ">= 4.4.4" ] ], + NeededOtherPackages := [ ["IO", ">= 4.4.4" ] ], SuggestedOtherPackages := [ ], ExternalConditions := [ ], ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/README.md new/profiling-2.6.3/README.md --- old/profiling-2.6.2/README.md 2025-06-21 17:55:24.000000000 +0200 +++ new/profiling-2.6.3/README.md 2026-07-29 15:16:02.000000000 +0200 @@ -1,4 +1,4 @@ -[](https://github.com/gap-packages/profiling/actions?query=workflow%3ACI+branch%3Amaster) +[](https://github.com/gap-packages/profiling/actions/workflows/CI.yml) [](https://codecov.io/gh/gap-packages/profiling) # The GAP 4 package `profiling' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/_Chapter_Functionality_provided_by_the_profiling_package.xml new/profiling-2.6.3/doc/_Chapter_Functionality_provided_by_the_profiling_package.xml --- old/profiling-2.6.2/doc/_Chapter_Functionality_provided_by_the_profiling_package.xml 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/_Chapter_Functionality_provided_by_the_profiling_package.xml 2026-07-29 15:22:44.000000000 +0200 @@ -19,7 +19,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="filenames" Name="MergeLineByLineProfiles" /> <Description> @@ -31,10 +30,8 @@ </Description> </ManSection> - </Section> - <Section Label="Chapter_Functionality_provided_by_the_profiling_package_Section_Generating_flame_graphs"> <Heading>Generating flame graphs</Heading> @@ -62,7 +59,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="profile [, filename]" Name="OutputFlameGraphInput" /> <Description> @@ -80,10 +76,8 @@ </Description> </ManSection> - </Section> - <Section Label="Chapter_Functionality_provided_by_the_profiling_package_Section_Generating_coverage_reports"> <Heading>Generating coverage reports</Heading> @@ -109,7 +103,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="coverage, outfile" Name="OutputJsonCoverage" /> <Description> @@ -126,7 +119,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="coverage, outfile" Name="OutputLcovCoverage" /> <Description> @@ -141,7 +133,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="coverage, outfile, pathtoremove[, opt]" Name="OutputCoverallsJsonCoverage" /> <Description> @@ -165,10 +156,8 @@ </Description> </ManSection> - </Section> - <Section Label="Chapter_Functionality_provided_by_the_profiling_package_Section_Miscellaneous"> <Heading>Miscellaneous</Heading> @@ -182,7 +171,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="file[, opts]" Name="ProfileFile" /> <Returns> a string @@ -218,7 +206,6 @@ </Description> </ManSection> - <ManSection> <Func Arg="pkg_name[, opts]" Name="ProfilePackage" /> <Returns> a string @@ -232,9 +219,7 @@ </Description> </ManSection> - </Section> - </Chapter> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/_Chapter_Tutorial.xml new/profiling-2.6.3/doc/_Chapter_Tutorial.xml --- old/profiling-2.6.2/doc/_Chapter_Tutorial.xml 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/_Chapter_Tutorial.xml 2026-07-29 15:22:44.000000000 +0200 @@ -23,15 +23,12 @@ b := a^(1,2,3); f := function() Intersection(a,b); end; ]]></Listing> -<P/> Firstly, we will record a profile of the function <C>f</C>: +With this, the code between <C>ProfileLineByLine</C> and <C>UnprofileLineByLine</C> is recorded to a file <F>output.gz</F>. <P/> <Listing><![CDATA[ -# Code between ProfileLineByLine and UnprofileLineByLine is recorded -# to a file output.gz ProfileLineByLine("output.gz"); f(); UnprofileLineByLine(); ]]></Listing> -<P/> You should write this all on a single line in &GAP;, as profiling records the real time spent executing code, so time spent typing commands will be counted. <P/> This creates a file called <F>output.gz</F>, which stores the result of running <C>f</C>. Now we want to turn that into a nice output. This requires loading the &profiling; package, like this: @@ -40,7 +37,6 @@ LoadPackage("profiling"); OutputAnnotatedCodeCoverageFiles("output.gz", "outdir"); ]]></Listing> -<P/> If loading the &profiling; package produces errors, make sure you have compiled both the &profiling; and <Package>IO</Package> packages. <P/> <Ref Func="OutputAnnotatedCodeCoverageFiles"/> reads the previously created <F>output.gz</F> and produces HTML output into the directory <F>outdir</F>. @@ -55,7 +51,6 @@ <P/> </Section> - <Section Label="Chapter_Tutorial_Section_FAQ__Problems"> <Heading>FAQ / Problems</Heading> @@ -98,7 +93,6 @@ <P/> </Section> - <Section Label="Chapter_Tutorial_Section_Function-based_profiling"> <Heading>Function-based profiling</Heading> @@ -115,6 +109,5 @@ ]]></Listing> </Section> - </Chapter> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/_entities.xml new/profiling-2.6.3/doc/_entities.xml --- old/profiling-2.6.2/doc/_entities.xml 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/_entities.xml 2026-07-29 15:22:44.000000000 +0200 @@ -1 +1,4 @@ +<!ENTITY RELEASEDATE '29 July 2026'> +<!ENTITY RELEASEYEAR '2026'> +<!ENTITY VERSION '2.6.3'> <!ENTITY profiling '<Package>profiling</Package>'> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/_main.xml new/profiling-2.6.3/doc/_main.xml --- old/profiling-2.6.2/doc/_main.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/profiling-2.6.3/doc/_main.xml 2026-07-29 15:22:44.000000000 +0200 @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- This is an automatically generated file. --> +<!DOCTYPE Book SYSTEM "gapdoc.dtd" +[ + <#Include SYSTEM "_entities.xml"> +] +> +<Book Name="profiling"> +<#Include SYSTEM "title.xml"> +<TableOfContents/> +<Body> +<#Include SYSTEM "_AutoDocMainFile.xml"> +</Body> +<TheIndex/> +</Book> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap0.html new/profiling-2.6.3/doc/chap0.html --- old/profiling-2.6.2/doc/chap0.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chap0.html 2026-07-29 15:22:46.000000000 +0200 @@ -29,10 +29,10 @@ <h2>Line by line profiling and code coverage for <strong class="pkg">GAP</strong></h2> <p> - 2.6.2</p> + 2.6.3</p> <p> - 21 June 2025 + 29 July 2026 </p> </div> @@ -41,10 +41,9 @@ - </b> <br />Email: <span class="URL"><a href="mailto:[email protected]">[email protected]</a></span> -<br />Homepage: <span class="URL"><a href="https://caj.host.cs.st-andrews.ac.uk/">https://caj.host.cs.st-andrews.ac.uk/</a></span> +<br />Homepage: <span class="URL"><a href="https://heather.cafe/">https://heather.cafe/</a></span> <br />Address: <br />St Andrews<br /> Scotland<br /> UK<br /> </p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap0.txt new/profiling-2.6.3/doc/chap0.txt --- old/profiling-2.6.2/doc/chap0.txt 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/chap0.txt 2026-07-29 15:22:44.000000000 +0200 @@ -6,10 +6,10 @@ [1X Line by line profiling and code coverage for [5XGAP[105X [101X - 2.6.2 + 2.6.3 - 21 June 2025 + 29 July 2026 Christopher Jefferson @@ -18,7 +18,7 @@ Christopher Jefferson Email: [7Xmailto:[email protected][107X - Homepage: [7Xhttps://caj.host.cs.st-andrews.ac.uk/[107X + Homepage: [7Xhttps://heather.cafe/[107X Address: [33X[0;14YSt Andrews[133X [33X[0;14YScotland[133X [33X[0;14YUK[133X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap0_mj.html new/profiling-2.6.3/doc/chap0_mj.html --- old/profiling-2.6.2/doc/chap0_mj.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chap0_mj.html 2026-07-29 15:22:46.000000000 +0200 @@ -32,10 +32,10 @@ <h2>Line by line profiling and code coverage for <strong class="pkg">GAP</strong></h2> <p> - 2.6.2</p> + 2.6.3</p> <p> - 21 June 2025 + 29 July 2026 </p> </div> @@ -44,10 +44,9 @@ - </b> <br />Email: <span class="URL"><a href="mailto:[email protected]">[email protected]</a></span> -<br />Homepage: <span class="URL"><a href="https://caj.host.cs.st-andrews.ac.uk/">https://caj.host.cs.st-andrews.ac.uk/</a></span> +<br />Homepage: <span class="URL"><a href="https://heather.cafe/">https://heather.cafe/</a></span> <br />Address: <br />St Andrews<br /> Scotland<br /> UK<br /> </p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap1.html new/profiling-2.6.3/doc/chap1.html --- old/profiling-2.6.2/doc/chap1.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chap1.html 2026-07-29 15:22:46.000000000 +0200 @@ -55,12 +55,10 @@ f := function() Intersection(a,b); end; </pre></div> -<p>Firstly, we will record a profile of the function <code class="code">f</code>:</p> +<p>Firstly, we will record a profile of the function <code class="code">f</code>: With this, the code between <code class="code">ProfileLineByLine</code> and <code class="code">UnprofileLineByLine</code> is recorded to a file <code class="file">output.gz</code>.</p> <div class="example"><pre> -# Code between ProfileLineByLine and UnprofileLineByLine is recorded -# to a file output.gz ProfileLineByLine("output.gz"); f(); UnprofileLineByLine(); </pre></div> @@ -82,7 +80,7 @@ <p>At the very top is a link to a flame graph. These give a quick overview of which functions took the most time. Functions are stacked, so lower functions call higher functions.</p> -<p>From this graph we can see that <code class="code">f</code> called <code class="func">Intersection</code> (<a href="../../../doc/ref/chap30_mj.html#X851069107CACF98E"><span class="RefLink">Reference: Intersection</span></a>), which called the function <code class="code">Intersection2 perm groups</code> near line 2950 in <code class="file">stbcbckt.gi</code>. This function spent most of its time in <code class="code">PartitionBacktrack</code>, and a little time in <code class="code">Stabilizer</code>.</p> +<p>From this graph we can see that <code class="code">f</code> called <code class="func">Intersection</code> (<a href="../../../doc/ref/chap30.html#X851069107CACF98E"><span class="RefLink">Reference: Intersection</span></a>), which called the function <code class="code">Intersection2 perm groups</code> near line 2950 in <code class="file">stbcbckt.gi</code>. This function spent most of its time in <code class="code">PartitionBacktrack</code>, and a little time in <code class="code">Stabilizer</code>.</p> <p>Whenever you generate a profile which contains timing information, a flame graph link will be show on the first page of your generated profile!</p> @@ -92,7 +90,7 @@ <ul> -<li><p><code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) records the wall time (also known as clock time) that occurs between <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) and the next <code class="func">UnprofileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X7C5DED9C7CC77504"><span class="RefLink">Reference: UnprofileLineByLine</span></a>). This is why we start profiling, run our code, and then stop profiling all on a single line.</p> +<li><p><code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) records the wall time (also known as clock time) that occurs between <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) and the next <code class="func">UnprofileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X7C5DED9C7CC77504"><span class="RefLink">Reference: UnprofileLineByLine</span></a>). This is why we start profiling, run our code, and then stop profiling all on a single line.</p> </li> </ul> @@ -110,7 +108,7 @@ </ul> <ul> -<li><p><code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) takes an optional second argument which is a record, which can set some configuration options. Here are some of the options:</p> +<li><p><code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) takes an optional second argument which is a record, which can set some configuration options. Here are some of the options:</p> </li> </ul> @@ -130,7 +128,7 @@ <h4>1.3 <span class="Heading">Function-based profiling</span></h4> -<p>Sometimes you will have code that just runs too long to easily profile line-by-line. You can profile this in <strong class="pkg">GAP</strong>'s older function-based profiler. You can read more about this profiler in <strong class="pkg">GAP</strong>'s documentation (<a href="../../../doc/ref/chap7_mj.html#X7FDF923D7D2937A1"><span class="RefLink">Reference: Profiling</span></a>), but here is a quick example to get you going!</p> +<p>Sometimes you will have code that just runs too long to easily profile line-by-line. You can profile this in <strong class="pkg">GAP</strong>'s older function-based profiler. You can read more about this profiler in <strong class="pkg">GAP</strong>'s documentation (<a href="../../../doc/ref/chap7.html#X7FDF923D7D2937A1"><span class="RefLink">Reference: Profiling</span></a>), but here is a quick example to get you going!</p> <div class="example"><pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap1.txt new/profiling-2.6.3/doc/chap1.txt --- old/profiling-2.6.2/doc/chap1.txt 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/chap1.txt 2026-07-29 15:22:44.000000000 +0200 @@ -23,11 +23,11 @@ [4Xf := function() Intersection(a,b); end;[104X [4X[32X[104X - [33X[0;0YFirstly, we will record a profile of the function [10Xf[110X:[133X + [33X[0;0YFirstly, we will record a profile of the function [10Xf[110X: With this, the code + between [10XProfileLineByLine[110X and [10XUnprofileLineByLine[110X is recorded to a file + [11Xoutput.gz[111X.[133X [4X[32X[104X - [4X# Code between ProfileLineByLine and UnprofileLineByLine is recorded[104X - [4X# to a file output.gz[104X [4XProfileLineByLine("output.gz"); f(); UnprofileLineByLine();[104X [4X[32X[104X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap1_mj.html new/profiling-2.6.3/doc/chap1_mj.html --- old/profiling-2.6.2/doc/chap1_mj.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chap1_mj.html 2026-07-29 15:22:46.000000000 +0200 @@ -58,12 +58,10 @@ f := function() Intersection(a,b); end; </pre></div> -<p>Firstly, we will record a profile of the function <code class="code">f</code>:</p> +<p>Firstly, we will record a profile of the function <code class="code">f</code>: With this, the code between <code class="code">ProfileLineByLine</code> and <code class="code">UnprofileLineByLine</code> is recorded to a file <code class="file">output.gz</code>.</p> <div class="example"><pre> -# Code between ProfileLineByLine and UnprofileLineByLine is recorded -# to a file output.gz ProfileLineByLine("output.gz"); f(); UnprofileLineByLine(); </pre></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chap2.html new/profiling-2.6.3/doc/chap2.html --- old/profiling-2.6.2/doc/chap2.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chap2.html 2026-07-29 15:22:46.000000000 +0200 @@ -62,14 +62,14 @@ <h5>2.1-1 ReadLineByLineProfile</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ReadLineByLineProfile</code>( <var class="Arg">filename</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p>Read <var class="Arg">filename</var>, a line-by-line profile which was previously generated by <strong class="pkg">GAP</strong>, using the <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) or <code class="func">CoverageLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X87CC48807DB4C008"><span class="RefLink">Reference: CoverageLineByLine</span></a>) functions from core <strong class="pkg">GAP</strong>. A parsed profile can be transformed into a human-readable form using either <code class="func">OutputAnnotatedCodeCoverageFiles</code> (<a href="chap2.html#X87AFADF581A7C1FD"><span class="RefLink">2.3-1</span></a>) or <code class="func">OutputFlameGraph</code> (<a href="chap2.html#X858B23AD78A2A73A"><span class="RefLink">2.2-1</span></a>)</p> +<p>Read <var class="Arg">filename</var>, a line-by-line profile which was previously generated by <strong class="pkg">GAP</strong>, using the <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) or <code class="func">CoverageLineByLine</code> (<a href="../../../doc/ref/chap7.html#X87CC48807DB4C008"><span class="RefLink">Reference: CoverageLineByLine</span></a>) functions from core <strong class="pkg">GAP</strong>. A parsed profile can be transformed into a human-readable form using either <code class="func">OutputAnnotatedCodeCoverageFiles</code> (<a href="chap2.html#X87AFADF581A7C1FD"><span class="RefLink">2.3-1</span></a>) or <code class="func">OutputFlameGraph</code> (<a href="chap2.html#X858B23AD78A2A73A"><span class="RefLink">2.2-1</span></a>)</p> <p><a id="X7D11F90387AEF584" name="X7D11F90387AEF584"></a></p> <h5>2.1-2 MergeLineByLineProfiles</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MergeLineByLineProfiles</code>( <var class="Arg">filenames</var> )</td><td class="tdright">( function )</td></tr></table></div> -<p>Read <var class="Arg">filenames</var>, a list of line-by-line profiles which were previously generated by <strong class="pkg">GAP</strong>, using the <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) or <code class="func">CoverageLineByLine</code> (<a href="../../../doc/ref/chap7_mj.html#X87CC48807DB4C008"><span class="RefLink">Reference: CoverageLineByLine</span></a>) functions from core <strong class="pkg">GAP</strong>. The elements of <var class="Arg">filenames</var> can be either filenames, or files previously parsed by <code class="func">ReadLineByLineProfile</code> (<a href="chap2.html#X82664B2C80EBA9A4"><span class="RefLink">2.1-1</span></a>).</p> +<p>Read <var class="Arg">filenames</var>, a list of line-by-line profiles which were previously generated by <strong class="pkg">GAP</strong>, using the <code class="func">ProfileLineByLine</code> (<a href="../../../doc/ref/chap7.html#X86557887796F66FA"><span class="RefLink">Reference: ProfileLineByLine</span></a>) or <code class="func">CoverageLineByLine</code> (<a href="../../../doc/ref/chap7.html#X87CC48807DB4C008"><span class="RefLink">Reference: CoverageLineByLine</span></a>) functions from core <strong class="pkg">GAP</strong>. The elements of <var class="Arg">filenames</var> can be either filenames, or files previously parsed by <code class="func">ReadLineByLineProfile</code> (<a href="chap2.html#X82664B2C80EBA9A4"><span class="RefLink">2.1-1</span></a>).</p> <p><a id="X8412FE417B2C715D" name="X8412FE417B2C715D"></a></p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/chooser.html new/profiling-2.6.3/doc/chooser.html --- old/profiling-2.6.2/doc/chooser.html 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/chooser.html 2026-07-29 15:22:46.000000000 +0200 @@ -23,9 +23,18 @@ return ""; } +<!-- load dark appearance either explicitly or via the OS preference --> +function writeAppearanceStyle(mode) { + if (mode == "dark") { + document.writeln('<link rel="stylesheet" type="text/css" href="dark.css" />'); + } else if (mode != "light") { + document.writeln('<style type="text/css">@import "dark.css" (prefers-color-scheme: dark);</style>'); + } +} + <!-- find style from current values in form --> function getstyle() { - var choices = ["toggle","colorprompt","tocside","font","justify"]; + var choices = ["toggle","colorprompt","tocside","font","justify","appearance"]; var style = ""; for (var i=0; choices.length > i; i++) { var a = currval(choices[i]); @@ -55,17 +64,23 @@ <!-- initialize form from GAPDocStyle cookie --> function initform() { var style = valueString(document.cookie, "GAPDocStyle"); + if (style == 0 || style == "default") + writeAppearanceStyle(""); if (style != 0 && style.length > 0 && style.length != "default") { stlist = style.split(","); var chform = document.forms[0].elements; + var appearance = ""; for (var i=0; chform.length > i; i++) { if (chform[i].type == "radio") { for (var j=0; stlist.length > j; j++) { - if (chform[i].value == stlist[j]) + if (stlist[j] == "dark" || stlist[j] == "light") + appearance = stlist[j]; + if (chform[i].value == stlist[j]) chform[i].checked = true; } } } + writeAppearanceStyle(appearance); } } @@ -119,6 +134,15 @@ <input type="radio" name="justify" value="ragged" onclick="javascript:f()"/> ragged right </p> +<p> +Appearance: +<input type="radio" name="appearance" value="" +onclick="javascript:f()"/> system (default) +<input type="radio" name="appearance" value="light" checked="checked" +onclick="javascript:f()"/> light +<input type="radio" name="appearance" value="dark" +onclick="javascript:f()"/> dark +</p> </form> <p> <a name="backLINK" href=""><strong>Apply settings to last page.</strong></a> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/dark.css new/profiling-2.6.3/doc/dark.css --- old/profiling-2.6.2/doc/dark.css 1970-01-01 01:00:00.000000000 +0100 +++ new/profiling-2.6.3/doc/dark.css 2026-07-29 15:22:46.000000000 +0200 @@ -0,0 +1,178 @@ +/* dark.css Frank Luebeck */ +/* Initial dark theme contributed by kiryph in issue #75. */ + +/* colors */ +body { + background: #121212; + color: #eee; +} + +a:link { + color: #576cad; +} + +a:visited { + color: #576cad; +} + +a:active { + color: #eee; +} + +a:hover { + background: #eee; +} + +pre { + color: black; +} + +tt, code { + color: #eee; +} + +/* layout for the definitions of functions, variables, ... */ +div.func { + background: #909090; +} + +/* Example elements (for old converted manuals, now in div+pre */ +table.example { + background: #efefef; +} + +/* becomes ... */ +div.example { + background: #efefef; + color: black; +} + +/* Links to chapters in all files at top and bottom. */ +div.chlinktop { + background: #22272e; + border-color: #3a414a; + color: #d7dde5; +} + +div.chlinktop a:hover { + background: #2f3742; +} + +div.chlinkbot { + background: #22272e; + border-color: #3a414a; + color: #d7dde5; +} + +/* and this is for the "Top", "Prev", "Next" links */ +div.chlinkprevnexttop { + background: #22272e; + border-color: #3a414a; + color: #d7dde5; +} + +div.chlinkprevnexttop a:hover { + background: #2f3742; +} + +div.chlinkprevnextbot { + background: #22272e; + border-color: #3a414a; + color: #d7dde5; +} + +div.chlinkprevnextbot a:hover { + background: #2f3742; +} + +div.ContChap div.ContSect:hover div.ContSSBlock { + background: #eee; + border-color: #666; + color: #000; +} + +div.ContSSBlock a:hover { + background: #fff; +} + +/* and here for the side menu of contents in the chapter files */ +div.ChapSects a:hover { + background: #eee; + color: #000; +} + +div.ChapSects div.ContSect:hover div.ContSSBlock { + background: #b5b5b5; + border-color: #666; + color: #000; +} + +div.ChapSects div.ContSect:hover div.ContSSBlock a:hover { + background: #828282; +} + +/* Table elements */ +table.GAPDocTable { + border-color: black; +} + +table.GAPDocTable td, table.GAPDocTable th { + border-color: #555; +} + +table.GAPDocTablenoborder td, table.GAPDocTable th { + border-color: #555; +} + +/* Colors and fonts can be overwritten for some types of elements. */ +/* Verb elements */ +pre.normal { + color: #eee; +} + +/* Func-like elements and Ref to Func-like */ +code.func { + color: #eee; +} + +/* K elements */ +code.keyw { + color: #983d3d; +} + +/* F elements */ +code.file { + color: #8e4510; +} + +/* Arg elements */ +var.Arg { + color: #060; +} + +/* colors for ColorPrompt like examples */ +span.GAPprompt { + color: #000097; +} + +span.GAPbrkprompt { + color: #970000; +} + +span.GAPinput { + color: #970000; +} + +/* Bib entries */ +span.BibKey { + color: #052; +} + +/* for light and dark mode pictures */ +.only-on-dark { + display: block; +} + +.only-on-light { + display: none; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/manual.css new/profiling-2.6.3/doc/manual.css --- old/profiling-2.6.2/doc/manual.css 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/manual.css 2026-07-29 15:22:46.000000000 +0200 @@ -477,6 +477,10 @@ span.BibHowpublished { } +/* for light and dark mode pictures */ +.only-on-dark { + display: none; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/manual.js new/profiling-2.6.3/doc/manual.js --- old/profiling-2.6.2/doc/manual.js 2025-06-21 17:55:41.000000000 +0200 +++ new/profiling-2.6.3/doc/manual.js 2026-07-29 15:22:46.000000000 +0200 @@ -47,6 +47,20 @@ return 0; } +/* load dark appearance either explicitly or via the OS preference */ +function writeAppearanceStyle(mode) { + if (mode == "dark") { + document.writeln( + '<link rel="stylesheet" type="text/css" href="dark.css" />' + ); + } else if (mode != "light") { + document.writeln( + '<style type="text/css">@import "dark.css" ' + + '(prefers-color-scheme: dark);</style>' + ); + } +} + /* when a non-default style is chosen via URL or a cookie, then the cookie is reset and the styles .js and .css files are read */ function overwriteStyle() { @@ -55,6 +69,8 @@ /* otherwise check cookie */ if (style == 0) style = valueString(document.cookie, "GAPDocStyle"); + if (style == 0 || style == "default") + writeAppearanceStyle(""); if (style == 0) return; if (style == "default") @@ -70,13 +86,19 @@ document.cookie = "GAPDocStyle="+style+";Path="+path; /* split into names of style files */ var stlist = style.split(","); + var appearance = ""; /* read style's css and js files */ for (var i=0; i < stlist.length; i++) { - document.writeln('<link rel="stylesheet" type="text/css" href="'+ - stlist[i]+'.css" />'); - document.writeln('<script src="'+stlist[i]+ - '.js" type="text/javascript"></script>'); + if (stlist[i] == "dark" || stlist[i] == "light") { + appearance = stlist[i]; + } else { + document.writeln('<link rel="stylesheet" type="text/css" href="'+ + stlist[i]+'.css" />'); + document.writeln('<script src="'+stlist[i]+ + '.js" type="text/javascript"></script>'); + } } + writeAppearanceStyle(appearance); } } @@ -110,4 +132,3 @@ for (var i=0; i < jscontentfuncs.length; i++) jscontentfuncs[i](); } - Binary files old/profiling-2.6.2/doc/manual.pdf and new/profiling-2.6.3/doc/manual.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/profiling.xml new/profiling-2.6.3/doc/profiling.xml --- old/profiling-2.6.2/doc/profiling.xml 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/profiling.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- This is an automatically generated file. --> -<!DOCTYPE Book SYSTEM "gapdoc.dtd" -[ - [<#Include SYSTEM "_entities.xml"> -] -> -<Book Name="profiling"> -<#Include SYSTEM "title.xml"> -<TableOfContents/> -<Body> -<#Include SYSTEM "_AutoDocMainFile.xml"> -</Body> -<TheIndex/> -</Book> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/title.xml new/profiling-2.6.3/doc/title.xml --- old/profiling-2.6.2/doc/title.xml 2025-06-21 17:55:37.000000000 +0200 +++ new/profiling-2.6.3/doc/title.xml 2026-07-29 15:22:44.000000000 +0200 @@ -9,20 +9,19 @@ Line by line profiling and code coverage for &GAP; </Subtitle> <Version> - 2.6.2 + 2.6.3 </Version> <Author> - Christopher Jefferson<Alt Only="LaTeX"><Br/></Alt> + Christopher Jefferson <Address> St Andrews<Br/> Scotland<Br/> UK<Br/> </Address> <Email>[email protected]</Email> -<Homepage>https://caj.host.cs.st-andrews.ac.uk/</Homepage> - +<Homepage>https://heather.cafe/</Homepage> </Author> <Date> - 21 June 2025 + 29 July 2026 </Date> </TitlePage> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profiling-2.6.2/doc/tutorial.autodoc new/profiling-2.6.3/doc/tutorial.autodoc --- old/profiling-2.6.2/doc/tutorial.autodoc 2025-06-21 17:55:24.000000000 +0200 +++ new/profiling-2.6.3/doc/tutorial.autodoc 2026-07-29 15:16:02.000000000 +0200 @@ -18,10 +18,9 @@ ]]></Listing> Firstly, we will record a profile of the function <C>f</C>: +With this, the code between <C>ProfileLineByLine</C> and <C>UnprofileLineByLine</C> is recorded to a file <F>output.gz</F>. <Listing><![CDATA[ -# Code between ProfileLineByLine and UnprofileLineByLine is recorded -# to a file output.gz ProfileLineByLine("output.gz"); f(); UnprofileLineByLine(); ]]></Listing>
