====== Clava Features ====== ===== Installation Script (Linux) ===== TODO ===== CMake Integration ===== TODO ===== Pragma Data ===== TODO ===== Server Mode ===== For short executions, most of the execution time is related to starting a JVM. There is an experimental feature where you can call Clava in server mode. In this mode, Clava can run in the background and will wait for requests. Then you can use a compiled program that performs requests to the server. To start Clava in server mode, use the flag -server: ''clava -server'' The [[doc:clava:features#installation_script_linux|Linux instalation script]] provides the ''clavaw'' program, which sends a request to a Clava server: ''clavaw '' Execution time without server vs with server: {{:doc:clava:clava_server.png?direct|}} ==== Limitations ==== * Only absolute paths are supported in this mode, since the server will use its own folder as the working folder. However, files defined in config files should be handled automatically, they are converted to absolute paths, using the folder of the config file as the base folder. Additionally, if inside a Lara script you need to use files, you can use ''Clava.getData().getContextFolder()'' (''import clava.Clava;'') to return the folder of the config file. * The output of the program will appear on the terminal of the server, not where ''clavaw'' runs. /* To improve execution time, Clava can be launched in server mode, using the flag ''-server'' (e.g., ''clava -server''). When running in server mode, Clava will keep running and accept local requests. Requests can be sent by using the command ''clavaw'', as if it where the command ''clava'' (both available if the [[Linux instalati]] */