Commit Graph

550 Commits

Author SHA1 Message Date
Bartosz Taudul
660f2cec7f Update manual. 2020-07-07 21:40:56 +02:00
Bartosz Taudul
a15964b2dc Clarify manual language. 2020-07-05 12:15:41 +02:00
Bartosz Taudul
08cd115db6 Update manual. 2020-07-04 12:46:27 +02:00
Bartosz Taudul
1975c1897d Update manual. 2020-07-04 12:03:00 +02:00
Bartosz Taudul
64bcf2893f Update manual. 2020-06-27 20:04:50 +02:00
Bartosz Taudul
37ea159646 Update manual. 2020-06-24 01:54:51 +02:00
Simonas Kazlauskas
29886435b4 ___tracy_alloc_* take pointer-size pairs
This enables better bindings in languages that do not have 0-terminated
strings for source/function name. It does not introduce any additional
overhead in languages that do use 0-terminated strings, either, but it
_is_ a breaking API change.

Fixes https://github.com/wolfpld/tracy/issues/53
2020-06-20 20:35:42 +03:00
Bartosz Taudul
5ccd62ced8
Merge pull request #52 from nagisa/nagisa/tracy-init-thread
Add ___tracy_init_thread function
2020-06-20 16:45:56 +02:00
Simonas Kazlauskas
6d74f4e8ff Extract manual changes into a separate section
The functions in the extracted section are mostly intended to be used
with bindings, so it made sense to give them their dedicated and
appropriately named section.
2020-06-20 17:32:35 +03:00
Simonas Kazlauskas
a110b42011 Add ___tracy_init_thread function
This function needs to be called for each non-main thread before calling
the `___tracy_alloc_` functions.

Alternative way to achieve this could be initializing the allocator
transparently in the `___tracy_alloc_*` calls.
2020-06-20 04:22:32 +03:00
Bartosz Taudul
5610bd0f8b Add information on how to build utilities. 2020-06-19 17:35:24 +02:00
Bartosz Taudul
634b0933d1 Update manual. 2020-06-12 11:41:12 +02:00
Bartosz Taudul
9c1dd6d498 Make manual zone scope management more prominent. 2020-06-12 11:29:53 +02:00
Bartosz Taudul
e932cbe162 Add missing OpenCL mentions. 2020-06-09 18:17:43 +02:00
Andrew Depke
39479b8d93
Merge branch 'master' into master 2020-06-08 23:50:20 -06:00
Andrew Depke
7127e36217 Detailed TracyD3D12NewFrame and synchronization 2020-06-08 23:40:16 -06:00
Bartosz Taudul
284d49b34b Change rdtscp check to rdtsc check. 2020-06-08 19:35:42 +02:00
Bartosz Taudul
1e8c842444 Update manual. 2020-06-08 18:27:41 +02:00
Andrew Depke
d15b83b669 Updated manual for Direct3D 12 2020-06-07 02:05:51 -06:00
Bartosz Taudul
bee70ee72b Add OpenCL to description. 2020-06-06 15:37:16 +02:00
Bartosz Taudul
eb497f2b9f Symbol resolution should be possible on iOS. 2020-06-06 15:00:57 +02:00
Thales Sabino
a46f83364e Add OpenCL trace support
- Adds the file TracyOpenCL.hpp which contains the API to annotate OpenCL applications
- It works in a similar fashion to the Vulkan annotations
- Adds an example OpenCL application in examples/OpenCLVectorAdd
- Adds "OpenCL Context" to the UI
- Manual entry for annotating OpenCL zones
2020-06-05 10:15:47 +01:00
Bartosz Taudul
215a58afad Mention dsymutil. 2020-06-04 17:58:48 +02:00
Bartosz Taudul
940b598cf8 Update manual. 2020-05-30 15:39:35 +02:00
Bartosz Taudul
8d149c59f8 Mention the failures of capstone library. 2020-05-30 15:39:34 +02:00
Graydon Hoare
e76b8ae423
Add TRACY_ONLY_LOCALHOST macro to avoid listening on all interfaces. 2020-05-28 22:13:06 -07:00
Graydon Hoare
afac7760ce
Add Zone{Text,Value,Name}V macros for conditionally-compiled calls to varname.{Text,Value,Name} 2020-05-28 11:17:42 -07:00
Bartosz Taudul
39ce605711 Update manual. 2020-05-25 01:19:42 +02:00
Bartosz Taudul
e0d7ffe754 Update manual. 2020-05-24 16:25:26 +02:00
Bartosz Taudul
08101061fe Update manual. 2020-05-23 16:10:13 +02:00
Bartosz Taudul
8c1e53f65a Update manual. 2020-05-16 14:56:11 +02:00
Bartosz Taudul
ef4c690c32 Update manual. 2020-05-13 18:06:39 +02:00
Bartosz Taudul
2195e032a6 Update manual. 2020-05-11 22:11:55 +02:00
Bartosz Taudul
a30a0b852f Update manual. 2020-05-11 19:34:25 +02:00
Bartosz Taudul
94d0232ed3 Update manual. 2020-05-10 17:08:30 +02:00
Bartosz Taudul
281f13f4c3 Update manual. 2020-05-09 13:57:06 +02:00
Bartosz Taudul
b9a4446fc1 Update manual. 2020-05-09 13:38:58 +02:00
Rokas Kupstys
6727cc2da4 Add empty TRACY_API instead of using dllexport for static builds on windows. Using dllexport is not correct, because it marks APIs in static lib for export and these APIs would get exported from a DLL that links to tracy.
Make API use TRACY_EXPORTS, and replace TRACYPROFILER_EXPORTS with TRACY_EXPORTS in vcxproj projects.

Swap dllimport with dllexport. Reason for this is a common idiom in CMake: target_compile_definitions(tracy PUBLIC -DTRACY_IMPORTS PRIVATE -DTRACY_EXPORTS). This idiom adds both defines in tracy target, but targets that link to tracy only get TRACY_IMPORTS. Swapped statements ensure that tracy always dllexports it's api and consuming targets always dllimport it.
2020-05-05 13:23:46 +03:00
Bartosz Taudul
1d74c400ac Update manual. 2020-05-03 21:29:18 +02:00
Bartosz Taudul
5ad1023088 Update manual. 2020-05-03 16:01:35 +02:00
Bartosz Taudul
47ed3d01af Update manual. 2020-05-02 02:34:15 +02:00
Bartosz Taudul
a40ba8f4e9 Switch query queue icon to satellite dish. 2020-04-30 18:41:08 +02:00
Bartosz Taudul
4634c5cdd3 Update manual. 2020-04-27 19:21:32 +02:00
Bartosz Taudul
6266d482ae Be explicit about displaying machine code. 2020-04-26 14:51:58 +02:00
Bartosz Taudul
0ff87d8f40 Slight rewording, local paths. 2020-04-22 01:23:03 +02:00
David Farrell
d5cd9d0221 Updated manual's vcpkg instructions 2020-04-21 16:04:33 -07:00
David Farrell
09e8ba1208 Updated manual with instructions for install_vcpkg_dependencies.bat 2020-04-21 10:59:37 -07:00
Bartosz Taudul
94276c51ac Update manual. 2020-04-19 16:11:31 +02:00
Bartosz Taudul
0186586fd9 Update manual. 2020-04-18 14:49:14 +02:00
Bartosz Taudul
5db956f546 Update manual. 2020-04-13 21:44:45 +02:00
Bartosz Taudul
0508586108 Update manual. 2020-04-13 17:52:43 +02:00
Bartosz Taudul
c43f5e14f2 Update manual. 2020-04-13 15:09:34 +02:00
Bartosz Taudul
3ef76df0d1 Update manual. 2020-04-11 20:30:24 +02:00
Bartosz Taudul
f9cf6df3ad Core package is implicit in vcpkg. 2020-04-11 01:25:16 +02:00
Bartosz Taudul
f8231bb109 Change main repository to github. 2020-04-10 17:48:59 +02:00
Bartosz Taudul
5f4145ef0a Update manual. 2020-04-08 19:33:55 +02:00
Bartosz Taudul
dc236a27cc Warn about retrieving context address. 2020-04-08 18:00:31 +02:00
Bartosz Taudul
fe98921e4c Add UI for disabling inlines in sample statistics. 2020-04-08 15:52:53 +02:00
Bartosz Taudul
2e418f24fa Update manual. 2020-04-07 22:17:24 +02:00
Bartosz Taudul
fc11537e12 Update manual. 2020-04-07 02:12:46 +02:00
Bartosz Taudul
54870e128c Add cautionary information to the manual. 2020-04-06 11:17:24 +02:00
Bartosz Taudul
7fca642c3d Compress full-quality DXT1 on AVX2 path. 2020-04-05 17:10:43 +02:00
Bartosz Taudul
b7f32c2a4c Update DXT1 benchmark with Ryzen timings.
Measured at the most commonly reached frequency. Data for peak at max
achieved frequency:
Reference: 173.2 us
SSE: 22.2 us
AVX2: 13.4 us
2020-04-05 17:10:43 +02:00
Bartosz Taudul
29dfb151cb Add Ryzen execution times example. 2020-04-05 16:34:50 +02:00
Bartosz Taudul
b91c88cdf6 Remove misleading example. 2020-04-05 16:02:22 +02:00
Bartosz Taudul
eba427cc5b Update manual. 2020-04-04 14:50:34 +02:00
Bartosz Taudul
27c125f23b Update manual. 2020-04-03 02:00:20 +02:00
Bartosz Taudul
5dd70c4306 Update manual. 2020-04-02 01:54:59 +02:00
Bartosz Taudul
b7e56d3030 Update manual. 2020-03-31 01:10:39 +02:00
Bartosz Taudul
02cf838ceb Update manual. 2020-03-29 14:12:59 +02:00
Bartosz Taudul
c23f4b2390 Update manual. 2020-03-28 14:42:47 +01:00
Bartosz Taudul
9837e06816 Implement cross-symbol jumping. 2020-03-28 14:27:29 +01:00
Bartosz Taudul
078109eca2 Update manual. 2020-03-28 01:36:51 +01:00
Bartosz Taudul
4b78559228 Update manual. 2020-03-27 18:02:05 +01:00
Bartosz Taudul
27be025805 Update manual. 2020-03-27 02:07:54 +01:00
Bartosz Taudul
2a54f2df5d Reverse the fileselector compile option. 2020-03-26 23:11:26 +01:00
Bartosz Taudul
d495431f24 Reverse the root window compile option. 2020-03-26 23:08:29 +01:00
Bartosz Taudul
58bb5d40c5 Remove support for non-extended font builds. 2020-03-26 23:04:44 +01:00
Bartosz Taudul
5ec1bd0f5e Update manual. 2020-03-26 22:49:46 +01:00
Bartosz Taudul
ef96ecd9b8 Use shorter descriptions. 2020-03-26 22:09:56 +01:00
Bartosz Taudul
6d5bccdd51 Update manual. 2020-03-26 00:18:38 +01:00
Bartosz Taudul
5a3dedea97 Update manual. 2020-03-25 20:59:59 +01:00
Bartosz Taudul
954c43912d Update manual. 2020-03-25 02:18:17 +01:00
Bartosz Taudul
1c23d7e67a Update manual. 2020-03-23 02:31:06 +01:00
Bartosz Taudul
9672dba765 Replace source file viewer with one that actually works.
This is much simpler, custom implementation of a text file viewer. It is
able to perform these two tasks as intended:
- center source view on the selected line,
- highlight that line.
2020-03-22 20:53:59 +01:00
Bartosz Taudul
57e14c9e5c Update NEWS. 2020-03-22 18:57:43 +01:00
Bartosz Taudul
59e859e59a Remove benaphore, use std::mutex on cygwin. 2020-03-19 02:06:54 +01:00
Bartosz Taudul
fe32385a12 Update manual. 2020-03-19 02:06:54 +01:00
Bartosz Taudul
8e1333468d Add missing images. 2020-03-14 21:13:08 +01:00
Bartosz Taudul
e785a57c65 Add high-quality frame image capture description. 2020-03-14 21:10:33 +01:00
Bartosz Taudul
42ccf332b9 Update manual. 2020-03-14 02:13:03 +01:00
Bartosz Taudul
5046664b8b Use "self time" consistently in the UI. 2020-03-14 01:38:46 +01:00
Bartosz Taudul
52132b9a29 Update manual. 2020-03-08 16:20:08 +01:00
Bartosz Taudul
2671245d41 Update manual. 2020-03-08 15:29:45 +01:00
Bartosz Taudul
6c95ab4d1e Update manual. 2020-03-08 14:05:57 +01:00
Bartosz Taudul
8f9ba5d54a Rearrange UI. 2020-03-01 01:32:31 +01:00
Bartosz Taudul
452d571e79 Update manual. 2020-02-29 19:19:12 +01:00
Bartosz Taudul
aed91a4d09 Update manual. 2020-02-29 14:55:14 +01:00
Bartosz Taudul
7e4088ed61 Update manual. 2020-02-29 00:58:59 +01:00
Bartosz Taudul
71a11554cb Update manual. 2020-02-27 23:11:52 +01:00
Bartosz Taudul
a35795f793 Use more appropriate name. 2020-02-26 23:02:34 +01:00
Bartosz Taudul
d04e8ab1d0 Update manual. 2020-02-26 22:48:18 +01:00
Bartosz Taudul
4f052a6b9c Update manual. 2020-02-26 19:16:27 +01:00
Bartosz Taudul
74aa3f861e Update manual. 2020-02-26 01:29:14 +01:00
Bartosz Taudul
d60641cac4 Update manual. 2020-02-24 01:43:15 +01:00
Bartosz Taudul
462cfe2fc1 Update manual. 2020-02-23 16:10:24 +01:00
Bartosz Taudul
a650717c1d Update manual. 2020-02-22 23:17:40 +01:00
Bartosz Taudul
100afe304e Fix typo. 2020-02-20 23:11:13 +01:00
Bartosz Taudul
3bd5da9896 Update manual. 2020-02-19 23:51:01 +01:00
Bartosz Taudul
9b1fe23b03 Update manual. 2020-02-15 13:50:05 +01:00
Bartosz Taudul
e524f4a050 Update manual. 2020-02-08 19:24:16 +01:00
Bartosz Taudul
aaa163a140 Update manual. 2020-02-08 13:45:02 +01:00
Bartosz Taudul
8b0da6f508 Update manual. 2020-02-02 15:47:17 +01:00
Bartosz Taudul
212b497f1f Update manual. 2020-01-28 21:52:54 +01:00
Bartosz Taudul
3ffbb56fa0 Update manual. 2020-01-25 17:16:08 +01:00
Bartosz Taudul
ae5c446652 Update manual. 2020-01-25 16:36:58 +01:00
Bartosz Taudul
cf07e2564d Update manual. 2020-01-23 22:09:18 +01:00
Bartosz Taudul
f3d2ca29dd Update manual. 2019-12-30 12:57:44 +01:00
Bartosz Taudul
086c9ce4c8 Update manual. 2019-12-28 17:43:20 +01:00
Bartosz Taudul
02e3f45ed2 Update manual. 2019-12-18 13:39:12 +01:00
Bartosz Taudul
30dbf48fda Update manual. 2019-12-16 21:55:14 +01:00
Bartosz Taudul
c5ce93136f Update manual. 2019-12-16 19:24:02 +01:00
Bartosz Taudul
bb69b5fae2 Update manual. 2019-12-08 16:17:34 +01:00
Bartosz Taudul
9236f0eb8c Update manual. 2019-12-06 01:04:12 +01:00
Bartosz Taudul
208d155b96 Update manual. 2019-11-30 01:25:43 +01:00
Bartosz Taudul
28a9800eb7 Update manual. 2019-11-26 00:57:25 +01:00
Bartosz Taudul
d1fb639b78 BSD needs libexecinfo for callstack capture. 2019-11-21 02:37:11 +01:00
Bartosz Taudul
8fd019b474 Update manual. 2019-11-15 01:37:19 +01:00
Bartosz Taudul
ce997cf6b0 Update manual. 2019-11-11 22:11:26 +01:00
Bartosz Taudul
85ae52b725 Update manual. 2019-11-10 23:30:49 +01:00
Bartosz Taudul
4b0654afe5 Update manual. 2019-11-07 23:59:12 +01:00
Bartosz Taudul
77a449a8f0 Update manual. 2019-11-07 22:37:11 +01:00
Bartosz Taudul
25c39a3311 Update manual. 2019-11-05 18:16:58 +01:00
Bartosz Taudul
1b33bfd522 Update manual. 2019-11-03 16:29:45 +01:00
Bartosz Taudul
a9738deae7 Update manual. 2019-11-01 20:49:02 +01:00
Bartosz Taudul
5ff40b05b3 Update manual. 2019-11-01 20:29:02 +01:00
Bartosz Taudul
2d46b50dd0 Update manual. 2019-11-01 02:13:02 +01:00
Bartosz Taudul
6a6009dbdf Update manual. 2019-10-31 15:00:35 +01:00
Bartosz Taudul
94da3b8467 Update manual. 2019-10-29 23:11:08 +01:00
Bartosz Taudul
706e031046 Update manual. 2019-10-28 23:43:44 +01:00
Bartosz Taudul
fb71800557 Update manual. 2019-10-28 22:15:12 +01:00
Bartosz Taudul
312b7190f8 Mention that only release builds should be profiled. 2019-10-26 16:59:54 +02:00
Bartosz Taudul
f024a05a01 Document another funny optimization. 2019-10-26 16:49:52 +02:00
Bartosz Taudul
dfe99c2604 Update capture utility in the manual. 2019-10-26 16:33:40 +02:00
Bartosz Taudul
dda192985a General updates to the manual. 2019-10-26 16:05:43 +02:00
Bartosz Taudul
492b7f9134 Update connection speed in the manual. 2019-10-26 14:37:45 +02:00
Bartosz Taudul
6aab54cfc4 Improve frame time graph in the manual. 2019-10-26 14:10:47 +02:00
Bartosz Taudul
f7155d7a77 Update context switches in the manual. 2019-10-26 14:00:32 +02:00
Bartosz Taudul
cccabe9b64 Update connection popup in the manual. 2019-10-26 13:54:57 +02:00
Bartosz Taudul
699ff43f1e Update timings. 2019-10-20 22:18:20 +02:00
Bartosz Taudul
411e4d42ac Move disassembly from FAQ to manual. 2019-10-20 21:23:16 +02:00
Bartosz Taudul
c774534b47 Use rdtsc instead of rdtscp.
But rdtscp is serializing!

No, it's not. Quoting the Intel Instruction Set Reference:

"The RDTSCP instruction is not a serializing instruction, but it does
wait until all previous instructions have executed and all previous
loads are globally visible. But it does not wait for previous stores to
be globally visible, and subsequent instructions may begin execution
before the read operation is performed.",

"The RDTSC instruction is not a serializing instruction. It does not
necessarily wait until all previous instructions have been executed
before reading the counter. Similarly, subsequent instructions may begin
execution before the read operation is performed."

So, the difference is in waiting for prior instructions to finish
executing. Notice that even in the rdtscp case, execution of the
following instructions may commence before time measurement is finished
and data stores may be still pending.

But, you may say, Intel in its "How to Benchmark Code Execution Times"
document shows that using rdtscp is superior to rdstc. Well, not
exactly. What they do show is that when a *single function* is
considered, there are ways to measure its execution time with little to
no error.

This is not what Tracy is doing.

In our case there is no way to determine absolute "this is before" and
"this is after" points of a zone, as we probably already are inside
another zone.  Stopping the CPU execution, so that a deeply nested zone
may be measured with great precision, will skew the measurements of all
parent zones.

And this is not what we want to measure, anyway. We are not interested
in how a *single function* behaves, but how a *whole program* behaves.
The out-of-order CPU behavior may influence the measurements? Good! We
are interested in that. We want to see *how* the code is really
executed. How is *stopping* the CPU to make a timer read an appropriate
thing to do, when we want to see how a program is performing?

At least that's the theory.

And besides all that, the profiling overhead is now reduced.
2019-10-20 20:52:33 +02:00
Bartosz Taudul
14292f9e35 Update manual. 2019-10-15 21:57:49 +02:00
Bartosz Taudul
dffe65f8e2 Update manual. 2019-10-14 20:52:18 +02:00
Bartosz Taudul
1ad246b4ca Update manual. 2019-10-14 20:17:28 +02:00
Bartosz Taudul
98ab83c69b Update manual. 2019-10-13 17:00:07 +02:00
Bartosz Taudul
4ba885ac95 Update manual. 2019-10-04 21:47:30 +02:00
Bartosz Taudul
871e1f1c37 Describe workaround for exiting from within a zone. 2019-10-04 20:43:08 +02:00
Bartosz Taudul
4e7e9ee3b1 Update manual. 2019-10-04 18:53:06 +02:00
Bartosz Taudul
ffdb6d8a3b Update manual. 2019-09-30 23:43:07 +02:00
Bartosz Taudul
e758e98ca4 Update manual. 2019-09-29 21:16:44 +02:00
Bartosz Taudul
2356069eac Update manual. 2019-09-27 18:15:32 +02:00
Bartosz Taudul
891e7711e9 Update manual. 2019-09-24 00:20:41 +02:00
Bartosz Taudul
49abad2dec Update manual. 2019-09-23 17:30:00 +02:00
Bartosz Taudul
a5fecc350b Update manual. 2019-09-21 15:47:37 +02:00
Bartosz Taudul
fb63dd89bc Update manual. 2019-09-21 15:21:29 +02:00
Bartosz Taudul
dfb9ae1a90 Update manual. 2019-09-21 15:03:09 +02:00
Bartosz Taudul
6fbfd12d1f Update manual. 2019-09-16 22:02:47 +02:00
Bartosz Taudul
e0105451f6 Update manual. 2019-09-12 20:14:54 +02:00
Bartosz Taudul
c1731f864b Update manual. 2019-09-11 19:05:53 +02:00
Bartosz Taudul
9cd359f0b9 Update manual. 2019-09-08 14:38:40 +02:00
Bartosz Taudul
3a9ff94580 Update manual. 2019-09-08 13:38:19 +02:00
Bartosz Taudul
6ef282dd1a Notify user that the data might not be correct. 2019-09-07 18:20:26 +02:00
Bartosz Taudul
70ae2f763d Update manual. 2019-09-07 17:20:51 +02:00
Bartosz Taudul
0837463f05 Describe how wonderful linux interfaces are. 2019-09-03 21:45:19 +02:00
Bartosz Taudul
be36e7a19c Update manual. 2019-08-31 01:08:03 +02:00
Bartosz Taudul
fc0593a840 Update manual. 2019-08-28 21:38:51 +02:00
Bartosz Taudul
ee14ff6d6e Update manual. 2019-08-28 20:39:29 +02:00
Bartosz Taudul
5b0ccef373 Change some icons. 2019-08-28 20:17:38 +02:00
Bartosz Taudul
2d50d07438 Allow completely disabling system tracing. 2019-08-21 01:16:25 +02:00
Bartosz Taudul
5c8937eba2 Update manual. 2019-08-20 23:59:47 +02:00
Bartosz Taudul
580944af65 Update manual. 2019-08-17 17:11:12 +02:00
Bartosz Taudul
26e93b35c6 Update manual. 2019-08-16 20:31:16 +02:00
Bartosz Taudul
2e31c26ae5 Update manual. 2019-08-15 20:21:09 +02:00
Bartosz Taudul
3e06daef31 Update manual. 2019-08-15 20:17:36 +02:00
Bartosz Taudul
bccb845908 Update manual. 2019-08-14 22:19:11 +02:00
Bartosz Taudul
29819321b9 Update manual. 2019-08-14 21:45:34 +02:00
Bartosz Taudul
cf4e04440e Update manual. 2019-08-14 18:42:04 +02:00
Bartosz Taudul
e5c40b74ee Update manual. 2019-08-13 21:18:52 +02:00
Bartosz Taudul
8aa0be39d5 Drop support for CPU id queries. 2019-08-12 23:05:34 +02:00
Bartosz Taudul
0b944c88bb Add a note about condition variables. 2019-08-12 17:01:01 +02:00
Bartosz Taudul
760357d6ea Explain why there are two methods for filling serial queue. 2019-08-12 13:19:10 +02:00
Bartosz Taudul
6fca188603 Update tech docs. 2019-08-08 19:25:35 +02:00
Bartosz Taudul
177b79a528 Update manual. 2019-08-04 16:19:51 +02:00
Bartosz Taudul
8953a2652e Update manual. 2019-08-04 00:48:29 +02:00
Bartosz Taudul
51bdbdb71f Update manual. 2019-08-03 15:09:19 +02:00
Bartosz Taudul
b3a1f932c3 Update tech docs. 2019-08-02 20:46:20 +02:00
Bartosz Taudul
138743f880 Update manual. 2019-08-01 23:24:51 +02:00
Bartosz Taudul
28220a5fbf Update manual. 2019-07-30 01:15:14 +02:00
Bartosz Taudul
e289f2b8c0 Update tech docs. 2019-07-30 01:15:14 +02:00